CN103455309B - 加载‑储存相关性预测器内容管理 - Google Patents
加载‑储存相关性预测器内容管理 Download PDFInfo
- Publication number
- CN103455309B CN103455309B CN201310323392.0A CN201310323392A CN103455309B CN 103455309 B CN103455309 B CN 103455309B CN 201310323392 A CN201310323392 A CN 201310323392A CN 103455309 B CN103455309 B CN 103455309B
- Authority
- CN
- China
- Prior art keywords
- entry
- loading
- storage
- given
- response
- 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
- 238000003860 storage Methods 0.000 claims abstract description 143
- 238000011068 loading method Methods 0.000 claims abstract description 134
- 230000008878 coupling Effects 0.000 claims abstract description 49
- 238000010168 coupling process Methods 0.000 claims abstract description 49
- 238000005859 coupling reaction Methods 0.000 claims abstract description 49
- 238000000034 method Methods 0.000 claims abstract description 29
- 230000004044 response Effects 0.000 claims description 29
- 230000004913 activation Effects 0.000 claims description 22
- 230000003213 activating effect Effects 0.000 claims description 9
- 230000007423 decrease Effects 0.000 claims description 7
- 230000014759 maintenance of location Effects 0.000 claims description 3
- 238000001514 detection method Methods 0.000 claims 1
- 238000013507 mapping Methods 0.000 description 18
- 238000001994 activation Methods 0.000 description 17
- 230000000875 corresponding effect Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 12
- 230000033228 biological regulation Effects 0.000 description 11
- 238000012549 training Methods 0.000 description 10
- 230000002596 correlated effect Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000012423 maintenance Methods 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 6
- 238000009826 distribution Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000004744 fabric Substances 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000013011 mating Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241001522083 Citrus trifoliata Species 0.000 description 1
- 241000196324 Embryophyta Species 0.000 description 1
- 235000000404 Poncirus trifoliata Nutrition 0.000 description 1
- 241000270666 Testudines Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 210000003127 knee Anatomy 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 231100000614 poison Toxicity 0.000 description 1
- 230000007096 poisonous effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004576 sand Substances 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000002893 slag Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 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
-
- 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, look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- 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, 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
Abstract
本公开涉及加载‑储存相关性预测器内容管理。实施例提供乱序处理器中管理加载‑储存相关性的方法和装置。加载储存相关性预测器可包括用于储存用于已经发现是相关的且乱序执行的加裁‑储存对的条目的表。表中的每个条目包括计数器以指示相关性预测的强度。如果计数器在阈值以上,则对加载‑储存对强制相关性。如果计数器低于阈值,则不对加载‑储存对强制相关性。当储存被派遣时,表被搜索,且表中的任何匹配条目被激活。如果加载被派遣,匹配激活条目,且计数器在阈值以上,则加载将等待,直到对应的储存发布才发布。
Description
技术领域
本发明总体上涉及处理器,更特别地,涉及处理器中管理加载-储存相关性的方法和枳制。
背景技术
超标量处理器试图通过在每个时钟周期发布并执行多条指令并且通过采用符合设计的最高可行时钟频率来获得高性能。提高每时针周期执行的指令擞量的一种方式是采取乱序执行(out of order execution)。在乱序执行中,与程序序列(或“程序顺序”)中指定的顺序相比,可采取不同的顺序执行指令。
一些处理器在乱序和/或推理性地调度指令方面尽可能地激进以试图最大化所实现的性能增益。例如,希望在较老的储存存储器操作之前调度加载存储器操作,因为加载存储器操作更一般地具有相关指令。然而在某些情况下,加载存储器操作可能依赖于较老的储存存储器操作(例如,储存存储器操作更新了加载存储器操作所访问的至少一个字节)。在这种情况下,如果在储存存储器操作之前执行加载存储器操作,则加载存储器操作将被错误地执行。如果加载存储器操作在相关的较老储存存储器操作之前执行,则处理器可能需要被清除和重定向,这会降低处理器性能。
如果在程序顺序中操作在另一操作之前,那么该操作比另一操作要老。如果在程序顺序中操作跟随在另一操作之后,那么该操作比另一操作要年青。类似地,操作可以被表示为在另一操作之前或者跟随在其后,或者可以被称为先前操作、在前操作、随后操作等。这种引用可以涉及操作的程序顺序。此外,“加载存储器操作”或“加载操作”可以涉及教据从存储器或高速缓存到处理器的传输,“储存存储器操作”或“储存操作”可以涉及数据从处理器到存储器或高速缓存的操作。这里“加载操作”和“储存澡作”可以被更简洁地分别称为“加载”和“储存”。
虽然加载和储存之间的相关性是动态的,但是防止这些事件的机制通常本质上是静态的。因此,为了防止加载-储存对的乱序违规,处理器更可能过度补偿而不是激进地乱序调度。在这种情况下,处理器将不必要地强制指令按顺序。如果不再要求相关性但仍然强制执行,那么存储器级别的并行性将被降低,处理器效率下降。
发明内容
提出用于预测加载-储存相关性的系统、装置、处理器和方法。处理器可至少包括派遣单元、加载-储存相关性预测器、以及保留站。当检测到较新加载和相关的较老储存之间的顺序违规时,这构成用于加载-储存相关性预测器的训练事件。在加载-储存对已经被训练之后,加载下次经过派遣单元时,预测器可以添加相关性到该加载。这种添加的相关性表示,该加载直到储存已经被调度才被调度出保留站。
在一实施例中,预测器表可用来储存已发现相关的加载-储存对。当较新加载在共享地址相关性的较老储存之前发布时,可以在预测器表格中分配一条目,在一实施例中,该条目可以与用于该储存的储存程序计数器(PC)的至少一部分以及用于加载的加载PC值的至少一部分相关联。预测器表中的每个条目还可以包括计数器字段,计数器字段可表示用于该特定加载-储存对的数据相关性预测的强度。计数器字段允须预测的相关性在它们失效或不再有效时被关闭。
计数器字段的值还可以影响预测器表的替换策略。替换指针可以持续扫描预测器的条目并且查找具有低计数量值的条目。在一实施例中,每次坊问预测器表时,替换指针可以前进。当替换指针发现计数器值为零的条目时,则指针可以停在该条目。当为新的相关加载-储存对分配新条目时,则指针所指的计数器等于零的现有条目可以被用于新条目。
对于本领域普通技术人员而言,通过下面对这里给出的方案的详细说明,这些和其它特征和优点将变得显而易见。
附图说明
结合附图参考以下说明,可以更好地理解所述方法和机制的以上和其它优点,附图中:
图1示出集成电路的一部分的一实施例。
图2是示出处理器核的一实施例的框图。
图3是示出映射/派遣单元和保留站的一实施例的框图。
图4示出加载-储存相关性预测器表的一实施例。
图5是示出在加载-储存相关性预测器表中使用的计数器值的表示的一实施例的框图。
图6是示出处理加载操作的方法的一实施例的概括流程图。
图7是示出用于调整加载-储存相关性预测强度指示符的方法的一实施例的概括流程图。
图8是示出用于替换加载-储存相关性预测器表中的条目的方法的一实施例的概括流程图。
图9是系统的一实施例的框图。
图10是计算初可读介质的一实施例的框图。
图11是示出加载-储存相关性预测器的一实施例的功能框图。
图12是示出加载-储存相关性预测器的另一实施例的功能框图。
具体实施方式
在以下说明中,阐述了大量的特定细节以提供对这里给出的方法和机制的透彻理解。然而,本领域普通技术人员应认识到,可以在没有这些特定细节的情况下实现各种实施例。在某些情况下,没有详细示出公知的结构、组件、信号、计算机程序指令和技术以避免不必要地模糊这里描述的方案。应理解,为了说明的简洁和清楚,图中所示的元件不一定按比例绘制。例如,某些元件的尺寸相对于其它元件被放大了。
本说明书包括对“一实施例”的引用。在不同上下文中,术语“在一实施例中”的出现不一定涉及相同实施例。可以采取与本公开一致的任意合适的方式组合特定特征、结构或特睦。此外,正如在整个申请文件中使用的那样,措辞“可”在允许的意义上使用(即表示有可能),而不是在强制的意义上使用(即表示必须)。类似地,措辞“包括”、“包含”、“具有”表示包括但不限于。
术语。以下段落提供了在本公开(包括所附权利要求)中使用的术语的定义和/或语境。
“包括”。这个术语是开放性的。在所附权利要求中使用时,这个术语不排除附加结构或步骤。假设权利要求描述:“一种处理器,包括加载-储存相关性预测器......”,这种权利要求没有排除该处理器还包括附加组件(例如高速缓存、抓取单元、执行单元)。
“配置为”。各种单元、电路或其它组件可以描述或声称为“配置为”执行一项任务或多项任务。在这种语境下,通过描述单元/电路/组件包括在操作期间执行一项任务或多项任务的结构(例如电路),“配置为”用于意味着一结构。这样,单元/电路/组件可以说配置为执行一任务,即使所指定的单元/电路/组件当前不操作(例如没有开启)。与语言“配置为”一起使用的单元/电路/组件包括硬件,例如电路、储存可执行来实现操作的程序指令的存储器等。单元/电路/组件“配置为”执行一项或多项任务的表述明确旨在对于该单元/电路/组件不援引35U.S.C§112第六款。此外,“配置为”可包括由软件和/或固件(例如FPGA或执行软件的通用处理器)操作从而以能够执行处理中的任务的方式运行的一般结构(例如一般电路系统)。“配置为”还可以包括采用制造工艺(例如半导体制造设施)来制造设备(例如集成电路),该设备适于实现或执行一项或多项任务。
“基于(based on)”。这里使用时,该术语用于描述影响确定的一个或多个因素。该术语不排除可能影响确定的其它因素。也就是说,该确定可以仅仅基于那些因素,或者至少部分基于那些因素。假定短语“基于B确定A”。虽然B可以是影响A的确定的因素,但是这样的短语并不排除也基于C来确定A。在其它情况下,A可以仅仅基于B来确定。
现在参考图1,示出了描述集成电路(IC)的一部分的一实施例的框图。在所示实施例中,IC10包括处理器组合体12、存储器控制器22以及存储器物理接口电路(PHY)24和26。注意,IC10还可以包括图1没有示出的许多其它组件。在各种实施例中,IC10还可被称为芯片上系统(SoC)、特定用途集成电路(ASIC)或装置。
处理器组合体12可以包括中央处理单元(CPU)14和16、二级(L2)高速缓存18以及总线接口单元(B1U)20。在其它实施例中,处理器细合体12可以包括其它数量的CPU。CPU14和16还可以被称为处理器或核。CPU14和16可以连接到L2高速缓存18。L2高速缓存18可以被连接到BIU20,BIU20可以被连接到存储器控制器22。其它实施例可以包括其它级高速缓存(例如三级(L3)高速缓存)。注意,处理器组合体12可包括图1未示出的其它组件。
CPU14和16可包括用于执行指令集架构中定义的指令的电路系统。特别地,包括指令的一个或多个程序可以通过CPU14和16执行。可以在各种实施例中实施任意指令集架构。例如在一实施例中,可以实施PowerPCTM指令集架构。其它典型的指令集架构可以包括ARMTM指令集、MIPSTM旨令集、SPARCTM指令集、x86指令集(也称为IA-32)、IA-64指令集等。
在各种实施例中,CPU14和16可以乱序地执行指令,在某些情况下,这导致顺序违规。例如,在加载和储存指令的情况下,当较新加载在具有重叠物理地址的较老储存之前执行时,可能发生顺序违规。为了避免或防止此类顺序违规的重复,可以采用各种技术来防止较新加载在其相关的较老储存之前执行。在一实施例中,每个CPU14和16可包括加载-储存相关性预测器以用于保持对被预测或预期为相关的且其还可具有乱序执行趋势的加载-储存对进行跟踪。在一实施例中,相关的加载-储存对可记录在表中。
有时候,预测器可关于加载-储存对进行训练,但是相关性可以是例外的情况。这可能因为加载和储存指令之间的相关性可基于地址并且加载和储存指令的地址可以随时间改变而发生。换句话说,加载-储存相关性可以是动态的。表中的某些条目在一段时间后可能是不准确的,强制拙行不准确条目的相关性可导致处理器不必要地延迟扣载操作而没有任何好处。
为了防止过时的条目在表中堆积,且为了防止针对加载-储存对强制执行与过时条目对应的相关性,表中的每个条目还可以包括代表相关性预测强度的指示符。指示符可以确定是否针对给定加载-储存对强制执行相关性。指示符还可以影响表的条目的替换策略,从而当在表中分配新条目时,具有低指示符值的条目可以被替换。
每个CPU14和16还可以包括一级(L1)高速缓存(未示出),每个L1高速缓存可以连接到L2高速缓存18。在一实施例中,L2高速缓存18可配置为对指令和数据进行高速缓存以供CPU14和16快速访问。L2高速缓存18可以包括任意容量和配置(例如直接映射、集合关联)。L2高速缓存18可以通过BIU20连接到存储器控制器22。BIU20还可以包括各种其它逻辑结构以将CPU14和16以及L2高速缓存18连接到各种其它设备和模块。
存储器控制器22可以包括任意数量的存储器端口,并且可以包括配置为接口连接到存储器的电路系统。例如,存储器控制器22可以配置为接口连接到动态随机存取存储器(DRAM),例如同步DRAM(SDRAM)、双信数据速率(DDR)SDRAM、DDR2SDRAM、Rambus DRAM(RDRAM)等。存储器控制器22还可以连接到存储器物理接口电路(PHY)24和26。存储器PHY24和26代表可连接到存储器控制器22的任意数量的存储器PHY。存储器PHY24和26可配置为接口连接到存储器设备(未示出)。
注意,其它实施例可以包括组件的其它组合,包括图1所示的组件和/或其它组件的子集或超集。虽然给定组件的一个实例可以如图1所示,但是其它实施例可以包括给定组件的两个或更多实例。类似地,贯穿本详细说明,可以包括给定组件的两个或更多实例,即使仅示出一个,和/或可以使用包括仅一个实例的实施例,即使示出了多个实例。
现在参照图2,示出处理器核的一实施例。核30是处理器核的一个例子,核30可以用在处理器组合体中,例如图1的处理器组合体12。在一实施例中,图1的每个CPU14和16可以包括核30的组件和功能。核30可以包括抓取和解码(FED)单元32、映射和派遣单元36、存储器管理单元(MMU)40、核接口单元(CIF)42、执行单元44以及加载-储存单元(LSU)46。注意,核30可以包括图2没有示出的其它组件和接口。
FED单元32可以包括配置为从存储器读取指令并将它们置于一级(L1)指令高速缓存34中的电路系统。L1指令高速缓存34可以是用于储存将由核30执行的指令的高速缓存存储器。L1指令高速缓存34可以具有任意的容量和结构(例如,直接映射、集合关联、全关联等)。此外,L1指令高速缓存34可以具有任意高速缓存线路尺寸。FED单元32还可以包括配置为预测分支指令和抓取所预测的路径的分支预测硬件。FED单元32还可以被重定向(例如,通过误预测、异常、中断、清除等)。
FED单元32还可以配置为将指令解码为指令操作(op)。通常,指令操作可以是包括在执行单元44和LSU46中的硬件能够执行的操作。每个指令可以被转换为一个或多个指令操作,其在执行时导致根据指令集架构为该指令定义的操作的执行。FED单元32可以配置为并行解码多个指令。
在某些实施例中,每个指令可以解码为单个指令操作。FED单元32可以配置为识别指令类型、源操作教等,每个解码的指令操作可以包括指令以及某些解码信息。在每个指令转换为单个op的其它实施例中,每个op可以简单地是相应指令或其一部分(例如,指令的一个或多个操作码字段)。在某些实施例中,FED单元32可以包括用于生成指令的op的电路系统和/或微码的任意组合。例如,相对简单的op生成(例如,每个指令一个或两个op)可以用硬件处理,而更大规模的op生成(例如超过三个op用于指令)可以用微码处理。在其它实施例中,包括在FED单元32中的功能可以被分为两个或多个单独单元,例如抓取单元、解码单元、和/或其它单元。
解码的op可以被提供给映射/派遣单元36。映射/派遣单元36可以配置为映射op和架构寄存器到核30的物理寄存器。映射/派谴单元36可以执行寄存器重命名以将源寄存器地址从op映射到识别重命名源寄存器的源操作数编号。映射派谴单元36还可以配置为将op派遣到执行单元44和LSU46中的保留站。映射/派谴单元36可以包括加载-储存相关性(LSD)预测器37和再排序缓冲器(ROB)38。在被派遣之前,op可以被写入到ROB38。ROB38可以配置为保存op,直到它们可以被按顺序提交。每个op可以被分配有ROB索引(RNUM),其对应于ROB38中的特定条目。RNUM可以用来跟踪核30中运行的操作。映射/派遣单元36还可以包括图2未示出的其它组件(例如映射器阵列、派遣单元、派遣缓冲器)。此外,在其它实施例中,映射/派遣单元36中包括的功能可以被分为两个或多个单独的单元,例如映射单元、派遣单元和/或其它单元。
LSD预测器37可以配置为训练和预测可能乱序发布的相关加载-储存指令对。LSD预测器37可以包括表,表具有已经被训练的加载-储存对的条目,每个条目可以包括识别加载和储存指令以及预测强度的信息。在一实施例中,训练事件可以是由在具有重叠物理地址的较老储存之前执行较新加载而触发的顺序违规。在一实施例中,表可以是256条目全关联结构。在其它实施例中,表可以具有其它数量的条目。在各种实施例中,表可以是用于各种表导段的内容可寻址存储器(CAM)。
当在相关的加载和储存操作之间有顺序违规时,核30可以被重定向和再同步。作为重定向的结果,可以采取各种校正动作。在这点上,可以对导致再同步的特定加载-储存对执行训练。该特定对的条目可以在LSD预测器37中被分配,预测强度可以设置为高水平。接着,在下一次经过核30的管线(pipeline)时,当从单元36派遣来自加载-储存对的储存时,可以搜索LSD预测器37以寻找该储存。匹配的条目可以被发现并被激活(armed)。当从单元36派遣来自训练的加载-储存对的加载时,可以对LSD预测器37执行搜索以寻找该加载,该加载将匹配在激活条目上。然后,该加载可以与相关性一起被派遣到保留站,使得加载在从保留站发布之前等候储存。
如果激活一条目的储存在该储存被发布之前从指令管线清除,LSD预测器37可以配置为清理表格。例如,可能有需要对LSD预测器37的激活条目进行解除激活的场合,例如当存在错误时。加载操作可能依赖于并且等候已经被清除的储存操作,这可以导致锁死核30。在这种情况下,当从核30清除储存操作时,可以搜索LSD预测器37的表以寻找与所清除的储存对应的任何激活条目。所发现的用于所清除的储存的任何匹配条目可以被解除激活。在一实施例中,LSD预测器37的每个条目可包括储存RNUM以识别加载硐淆对的特定储存。
执行单元44可以包括任意数量和类型的执行单元(例如,整数、浮点、矢量)。每个执行单元44还可以包括一个或多个保留站(未示出)。CIF42可以连接到LSU46、FED单元32、MMU40以及L2高速缓存(未示出)。CIF42可以配置为管理核30和L2高速缓存之间的接口。MMU40可以配置为扶行地址转换和存储器管理功能。
LSU46可以包括L1数据高速缓存48、保留站50和52、储存队列54和加载队队56。加载和储存操作可以从映像派遣单元36派遣到保留站50和52。其它实施侈可以包括其它数量的保留站。操作可以乱序发布离开保留站50和52。储存队列54可以储存对应于储存操作的数据,加载队列56可以储存与加载操作相关联的数据。LSU46还可以通过CIF42连接到L2高速缓存。注意,LSU46还可以包括图2未示出的其它组件(例如寄存器文件、预抓取单元、转换旁视缓冲器)。
加载-储存顺序违规可以在较老储存被发布时由LSU46检测。在一实施例中,较老储存的储存地址可以与加载队列56中的所有较新加载进行比校。如果检测到匹配,那么加载操作可能已经用不正确的数据完成。这可以在将来通过利用加载和储存澡作的RNUM将重定向信号发送回映射/派谴单元36来校正。映射/派遣单元36可以将指令从核30的管线清除,并将核30的前端重定向回到加载的指令地址,加载指令可以被重新抓取。为了防止以后的重定向,映射/派遣单元36可以在LSD预测器37中预测和记录加载对储存的相关性,并将所预测的相关性传输到保留站50和52。
在典型情况下,当储存被派遣时,储存可以搜索LSD预测器37,然后如果发现针对储存的匹配,则表中的匹配条目可以被激活(即,被启用),储存RNUM可以被写入到该条目。随后,加载可以被派遣,可以对表中的加载进行搜索。在一实施例中,用于搜索LSD预测器37的识别值可以是加载和储存PC值的至少一部分。在另一实旋例中,用于搜索和储存在条目中的识别值可以是从PC值的至少一部分、架构寄存器值的至少一部分和/或微op值的至少一部分导出的散列值。可以使用的识别符的其它可能性是可行的并被预期。
在各种实施例中,加载可以匹配在LSD预测器37中的任意数量的条目上。在一实施例中,对于要发生的匹配,条目需要被激活。如果加载匹配在一个激活条目上,那么对储存RNUM的相关性可以通过将激活储存RNUM链接到加载来被创建。加载可以被标记为等候特定储存RNUM从保留站发布。在保留站中,可以有用于加载的相关性字段,加载可以标记为依赖于给定储存从保留站50或52之一发布。因此在该情况中,加载可以标记为等待特定的储存RNUM,加载可以在特定储存发布的一个周期之后发布。
如果加载匹配在多个激活储存条目上,这可以被称为多匹配情况。在这种情况下,在发布之前,加载可以等待,直到所有较老储存已经发布。例如在一实施例中,可以设置一位(bit),以便在加裁发布之前,加载可以等待所有较老储存发布。蝴制所有较老储存在加载之前从保留站50和52发布。在一实施例中,每个保留站50和52可以使其包含的最老储存可被获得。一旦加载变得比那两个储存都更老,那么该加载可以发布。
每个保留站50和52可以包括拾取器,其配置为发布有效的任何操作。当储存变为有效并且它被拾取和发布时,标签可以被广播,然后与该储存相关的加载将匹配在那个标签上。这将把该加载标记为适合从保留站泼布出来。换句话说,储存产生由加载使用的标签。在一实施例中,标签可以是储存的RNUM。在一实施例中,RNUM可以是9位的值,尽管在其它实施例中,RNUM的大小可以变化。具有相关性的加载可以具有与该加载一起储存在保留站中的额外源,该额外源可以是来自LSD预测器37中的相同条目的储存的RNUM。
当加载匹配在LSD预测器37中的条目上并且该条目被激活时,这表示有加载需要等待的有效储存。该条目还可以包括关于预测强度的指示符。在一实施例中,指示符可以是计数器,如果计数器的值在阈值以上,那么该条目可以被视为强的很可能的预测,加载-储存相关性可以被建立。阈值的值可以在不同实施例之间变化。如果加载匹配在激活条目上且指示符为弱,表示不使用该预测,那么可以不对该加载建立相关性。如果加载-储存相关性被建立,那么加载可以拾取储存的R旺M,从而RNUM从条目读出并在派遣加载时与加载一起传差到保留站。加载还可以被标记为具有保留站相关性。
在一实施例中,仅当储存标记为有效发生器(producer)时,从保留站发布的储存将导致标签被广播。当储存搜索LSD预测器37并且没有发现匹配时,则储存将不被设立为有效发生器。如果储存在LSD预测器37中找到有效条目且预测强度指示符表示加载-储存对相关性预测在阈值以上(即,预测被开启),那么该条目可以被激活。在一实施例中,如果预测强度指示符低于阈值,那么储存将不激活条目,即使储存与该储存条目匹配。在某些实施例中,当储存发现匹配时条目可以被激活,而不考虑预测强度指示符的值。储存可以匹配在多个条目上,多个条目可以针对单个储存被激活。
当加载匹配LSD预测器37的激活条目时,加载被标记为相关的,该加载可以等待从保留站发布,直到从保留站发布相应的储存。然后,在具有建立的相关性的加载发布之后,可以确定该加载从哪里接收其数据。根据加载从哪里接收数据,LSD预测器37的相应条目中的预测强度指示符可以增大、减小或保持不变。
例如,如果加载数据来自储存队列54,那么来自LSD预测器37的预测可认为是良好的。在该情况下,来自储存的数据还没有进入到高速缓存48,因此加载等候储存是有益的。如果用于该加载操作的加载数据还在储存队列54中,那么这可以表示在该加载和该储存之间确实有真实的相关性。换句话说,数据确实需要从储存队列54传送以用于相关的加载。
如果针对加载数据在储存人列54中存在未命中(miss),那么相关性可能不再有效。可能有在先相关性,但是后来加载或储存的地址发生改变,加载和储存不再冲突。在该情况下,如果从高速缓存48检索到储存数据,那么该数据可能已经储存在那里长时间了。因此,确定储存数据是从储存队列54还是从高速缓存48传送可以表明预测是否准确。此外,在LSD预测器37的匹配条目中储存的预测强度指示符可以根据该确定而更新。如果预测是准确的,使得加载数据从储存队列54传送,那么预测强度指示符可以增大。如果加载数据来自高速缓存48,那么预测强度指示符可以减小。在其它实施例中,可以利用确定相关性预测是否准确的其它挂术。
应理解,图2所示的功能分布不是可用于处理器核的唯一可行的微架构。其它处理器核可包括其它组件,省略一个或多个所示的组件,和/或包括组件之间的不同功能布置。
现在参考图3,示出了映射/派遣单元和保留站的一实施例的框图。在一实施例中,映射/派遣单元60可包括寄存器映射器62、再排序缓冲器(ROB)64、加载储存相关性(LSD)预测器66以及派遣单元68。寄存器映射器62和LSD预测器66连接为从解码单元(未示出)接收op。LSD预测器66连接为从解码单元接收PC,并且连接为从加载-储存单元(未示出)接收“重定向”和“计数更新,馆号。LSD预测器66还连接到替换指针,替换指针搜索LSD预测器66以寻找在分配新条目时可以丢弃的条目。
寄存器映射器62可以配置为映射架构寄存器到物理寄存器,并提供op和物理寄存器地址到派遣单元68。派遣单元68可以配置为派遣op到保留站70A-N。派遣单元68可以配置为维护保留站70A-N中的空保留站条目的列表,并可以大本上向op分配条目以平衡保留站70A-N之间的负载。
LSD预测器66可以配置为检查op中的储存乖功口载,并且可以比较任意检测到的储存和加载的PC与之前导致顺序违规并已经在训练表中分配条目的储存和加载的PC。如果针对给定储存,PC匹配,那么LSD预测器66可以配置为激活训练表中的对应条目。在一实施例中,LSD预测器66可以在激活条目之前检渣预测指示符的强度。如果指示符在阈值以上,则条目可以被激活,否则,如果指示符低于阈值,则条目可以不被激活。此外,LSD预测器66可以配置为捕获分配给储存的RNUM作为该储存的标识符。
当检测到加载匹配激活条目且激活条目的预测指示符的强度在阈值以上时,LSD预测器66可以配置为使用储存标识符来生成加载对储存的相关性,防止加载被保留站70发布,直到该储存被发布以后。在一实施例中,LSD预测器66可以配置为将储存RNUM连同加载有相关性的指示符一起转送至给定保留站70。此外,如果对于加载有多个匹配,那么LSD预测器66可以将多匹配指示符转送到给定的保留站70。在其它实施例中,LSD预测器66可以配置为在多匹配的情况下将多个储存RNUM转送到保留站70,保留站70可以配置为储存每加载多于一个储存RNUM。其它实施例可以按其它方式表示储存相关性。
保留站70A-N代表任意数量的保留站,其可以用作加载/储存单元(未示出)和/或执行单元(未示出)的一部分。每个保留站70A-N可以配置为储存操作,直到该操作由相应功能单元执行。图3中示出根据一实施例的保留站70A中的条目的例子。每个保留站70A-N可以根据实施例而包括各种数量的条目。每个条目可以包括相关性指示符、多匹配指示符、相关性的储存RNUM、加载/储存(L/S)指示符(指示操作是加载还是储存)、以及操作的PC。在其它实施例中,该条目可包括其它字段(例如,源寄存器、目的地寄存器、源操作数)和/或省略图3所示的一个或多个字段。此外,其它类型的条目(例如整数、浮点)可以被不同地格式化。
LSD预测器66可以配置为基于重定向指示识别导致顺序违规的加载-储存对。重定向指示可以包括加载和储存PC,或者其它加载和储存标识符。LSD预测器66可因此被导致顺序违规的储存和加载训练以在将来当在处理器中再抓取和再执行相同代码序列时防止这种事件。
寄存器映射器62可以包括存储器,存储器具有用于每个逻辑寄存器的条目。寄存器映射器62中每个逻辑寄存器的条目可以储存最近的op的RNUM以更新逻辑寄存器。也可以在重命名映射条目中储存其它状态。例如,一位可以表示最近的op是否已经被执行。在这样的实施例中,寄存器映射器62可以从给定保留站70接收识别已发布的op的信号,这可以允许寄存器映射器62更新该位。还可以包括表示最近的op是否已经被隐退(retired)的位。
注意,不是到图3所示单元的所有连接都被示出,映射/派谴单元60可以包括执行其它操作的其它电路,其未示出。例如,寄存器映射器62和ROB64可以接收重定向指示以调整它们的映射,从而应对op被清除。此外,寄存器映射器62和ROB64可以接收隐退op的指示,从而调整它们的状态到隐退(例如,释放条目以用于分配给新op,更新所构架的重命名状态等)。这些操作对于LSD预测器66的操作是辅助性的,因此这里没有详细描述。
注意,虽然PC和RNUM被用作储存的标识符,PC被用作加载的标识符,但是其它实施例可以使用能够唯一识别处理器中运行的指令的任意标识符(例如任意类型的标签或序列号)。
现在参照图4,示出了加载-储存相关性预测器表的一实施例。表90可以根据实施例而包括各种数量的条目。每个条目可对应于加载-储存对,该加载-储存对已经被预测为具有重叠的地址和乱序发布。响应于顺序违规被检测到,可以在表90中分配条目。在已经发生顺序违规的情况下,储存队列条目可以对处理器进行清除(包括导致违规的加载)以回到抓取单元,表90关于该违规被训练,使得用于该特定加载-储存对的条目被添加到表90。典型地,触发重定向的被清除的储存将已经被发布,因此当清除的加载被重新抓取和解码时,表90中的条目将不被激活,加载可以正常发布。在今后执行在该PC的储存时,该储存将激活表90中的相应条目,并防止该加载被发布,直到该储存已经被定布。
表90可以配置为允许被多个op同时访问和更新。此外,虽然表90示为集成表,但是不同的字段可以是对应于单独存储器的单独表,单独表的条目彼此关联。例如,加载PC可以是单独表,储存PC可以是单独表,加载PC条目可以对应于存储PC条目,针对该条目,特定的加载-储存顺序违规已经被检测和训练。
每个条目可以包括有效指示符92。有效指示符92可以指示该条目是否是有效条目,该条目是否应用于在条目指示的加载和储存之间强制执行相关性。在一实施例中,有效指示符92可以在复位时被清理。有效指示符92还可以影响替换策略,从而无效条目可以是分配新条目时被替换的第一条目。在某些实施例中,有效指示符92可以不包括在表90的条目中。替代地,在这些实施例中,计数器字段102的值可以用来指示条目是否有效。其它实施例可以在表中排除计数器字段102,仅使用有效指示符92。
每个条目还可以包括储存PC值94以识别特定的储存操作。在某些实施例中,储存PC值可以与架构寄存器细合和/或被:散列化。当派遣储存时,可以搜索表90的储存PC以寻找所派遣的储存的PC。表90可以是储存PC字段的CAM,其中存储器中的每个条目包括进行比较的电路系统。储存PC字段还可以是操作为CAM的一组寄存器和比较器。如果所派遣的储存匹配任意条目,那么这些条目可以使激活位98被设置。储存的RNUM还可以被写入到条目的储存RNUM96字段。当储存从保留站发布时,则激活位98可以从之前由该特定储存激活的表90的任意条目清除。
当加载被派遣时,可以搜索表90的每个条目的加载PC值100以寻找所派遣的加载的PC。表90可以是加载PC字段的CAM。如果所派遣的加载匹配任意激活条目,那么可以对特定加载建立并强制执行相关性。如果加载匹配未激活条目,那么不建立相关性,因为相应的储存没有被派遣或已经被发布,因此应该不会发生顺序违规。如果加载匹配多个激活条目,那么该加载可以等待,直到所有较老储存在加载本身发布之前已经被发布。如果加载匹配单个激活条目,那么储存RNUM可以和加载一起被写入到保留站。在保留站中还可以有针对加载设置的相关性位以指示该加载具有有效的相关性。
每个条目还可以包括计数器字段102。计数器102的值可以指示条目中特定加载硐存对的预测强度。在一实施例中,计数器102可以是2位可逆计数器(up-down counter)。在其它实施例中,计数器102可以利用其它位数。此外,计数器102可以配置为在其最大值和最小值饱和。
当储存匹配条目时,可以在激活条目之前检查计数器值102。如果计数器值102低于阈值,那么该条目可以不被激活。如果计数器值102在阈值以上,那么该条目可以被激活。在某些实施例中,条目可被激活而不检查计数器值102。当加载匹配条目时,计数器值102也可以被检查。只有计数器值102在阈值以上时,可以强制执行相关性。阈值的值可以根据实施例而变化,且可以根据特定操作条件而调整。
在另一实施例中,超龄(age-out)计数器可以用于表90的条目。每个条目可以包括超龄计数器,当条目被首次分配时,超龄计数器可以设置为某个初始值。也可以利用间隔计数器来对可编程间隔进行计数,当间隔计数器到期时,表90中的每个超龄计数器可以递减。间隔计数器然后可以重新开始并对可编程间隔进行计数。每次间隔流逝时,表90中的每个超龄计数器可以递减。任何时候加载-储存对访问或激活条目时,超龄计数器可以递增固定量。如果表90中的条目不再被使用,那么最后它的超龄计数器将变为零,这时该条目将被新条目替换。
在其它实施例中,表90可以包括其它字段和/或省略图4所示的一个或多个字段。此外,在其它实施例中,表90可以被不同地格式化。
现在参考图5,示出了与预测器表中的加载-储存对条目对应的计数器值的代表的一实施例。针对表110中的二位计数器绘示了计数器值的分配。在其它实施例中,计数器可以利用其它位数。
在一实施例中,计数器值“11”或3可表示“强启用”。对于具有该计数器值的条目,加载-储存对的相关性可以被强制执行。计数器值“10”或2可以表示“弱启用”。如果条目是“弱启用”,则相关性也可以被强制拙行。计数器“01”或1可以表示“弱禁用”。如果条目是“弱禁用”,那么对于相应的加载-储存对,相关性可以不被强制执行。计数器值“00”或0可以表示“强禁用”。在某些实施例中,“强禁用”也可以指示条目无效。图5所示的实施例中的阈值在2和1之间。在其它实施例中,阈值可以是其它值。
在一实施例中,当条目首次被分配时,新条目的计数器可以默认设置为弱启用。当计数器是弱禁用时(计数器=1),则匹配该条目的加载-储存对可以不建立相关性。替代地,加载可以没有相关性地被发布。在其它实施例中,可以利用其它大小的计数器,计数器值可以具有不同的表示意义。
现在参照图6,示出处理加载操作的方法的一实施例。为了论述方便,采取顺序方式示出这个实施例中的步骤。应注意,在下述方法的各种实施例中,所述元素中的一个或多个可以同时执行,以与所示方式不同的顺序执行,或者可以完全被省略。其它附加元素也可以根据需要而被执行。此外,可以并行执行流程图中的部分,以用于同时处理多个加载操作。
在一实施例中,映射/派谴单元可以接收加载操作(框120)。加载操作可以已经在处理器管线的先前级中被解码。然后,可以搜索加载-储存相关性预测器表以寻找具有与加载操作相同的PC的条目(框122)。在执行溲索之后,可以确定找到多少匹配(条件框124)。如果没有找到匹配(条件框124),那么加载可以没有相关性地被派遣到保留站(框126)。加载可能匹配没有激活的条目,但是这些未激活匹配不构成将需要强制执行相关性的实际匹配。类似地,如果加载匹配激活条目但预测器指示符计数器低于阈值,那么这不构成实际匹配,因此相关性将不被强制拙行。在某些实施例中,针对加载,计数器可以不需要与阈值比较,如果在激活条目之前储存已经检查了计数器的话。
如果加载不具有需要强制执行的相关性,那么这可以采用各种方式来表示。例如在一实施例中,相关性位可以被清除以表示加载不具有相关性。在框126之后,拾取器可以选择加载以用于在任何时候从保留站发布而无需等待任何其它操作的发布(框132)。
如果找到与激活条目的单个匹配,那么加载可以带有相关性地被派遣到保留站(框128)。相应储存的RNUM可以与加载一起写入到保留站条目。在一实施例中,对于将被视为匹配的条目,条目的计数器字段可能需要在阈值以上。例如,如果加载匹配激活条目,但是该条目的计数器字段低于阈值(即,弱或强禁用),那么这可以不构成真实匹配。在框128之后,加载可以等候发布,直到它所相关的对应储存被发布(框134)。
如果针对加载发现与激活条目的多个匹配(条件框124),那么加载可以带有多匹配指示符设置地派屯到保留站(框130)。然后,加载可以等待从保留站发布,直到所有较老储存已经被发布(框136)。加载/储存单元可以包括多个保留站,每个保留站可以配置为跟踪其条目中的最老储存。当具有多个匹配的加载被派遣时,每个保留站中的最老储存可以被记录,在来自每个保留站的最老储存被发布之后,然后加载可以在一个周期之后被发布。
现在参照图7,示出用于调整加载-储存相关性预测器强度指示符的方法的一实施例。为了论述方便,以顺序方式示出这个实施例中的步骤。应注意,在下述方法的各种实施例中,所述元素中的一个或多个可以同时执行,以与所示方式不同的顺序执行,或者可以被完全省略。还可以根据需更执行其它附加元素。
具有相关性的加载可以从保留站发布(框140)。该加载可能已经被延迟,直到加载-储存对的相应储存被发布之后才被发布。相应储存可以已经从相同保留站发布,或者已经从不同保留站发布。在加载从保留站发布并被执行之后,可以确定从哪里获得加载数据(框142)。
如果加载数据在储存队列中(条件框144),那么这个特定加载-储存对的相关性预测可以被认为是良好的,加载-储存相关性预测器中的相应条目的计数器可以递增(框146)。如果针对加载数据,在储存队列中存在未命中(条件框144),那么加载对储存的相关性可能已经不再被保证(即,相关性预测不再有效),加载-储存相关性预测器中的相应条目的计数器可以递减(框148)。该方法可以针对具有相关性的多个不同加载并行地执行。
现在参照图8,示出用于替换加载-储存相关性预测器表中的条目的方法的一实施例。为了论述方便,采取顺序方式示出这个实施例中的步骤。应注意,在下述方法的各种实施例中,所述元素中的一个或多个可以同时执行,以与所示方式不同的顺序执行,或者可以被完全省略。还可以根据需要执行其它附加元素。
指针可以指向加载-储存相关性预测器表中的一组相邻条目,该组相邻条目的计数器值可以被分析(框160)。在一实施例中,该组可以包括4个条目。在其它实施例中,该组可以包括其它数量的条目。然后,具有最低计数器值的条目可以被选择(框162)。如果不止一个条目具有最低计数器值,那么指针可以随机选择这些条目中的任何条目,或者柏针可以利用其他值或度量在这些具有最低计数器值的条目之间进行区分。
如果在该点需要分配新条目以用于新训练的具有相关性的加载-储存对(条件框164),那么在该组中所选择的具有最低计陡器值的条目可以被丢弃,新条目可以被分配在其位置(框166)。注意,新的加载-储存对可以响应于重定向和清除信号而被分配,重定向可以发生在任意点。因此,条件框164可以位于图8的流程图中的其他位置。在新条目被分配之后,指针可以移到下一组条目(框172)。如果此时不需要分配新条目(条件框164),那么可以确定最低计数器值是否为0(条件框168)。
如果最低计数器值为0(条件框168),那么指针可以停留在其当前位置,并且等待条目被分配(框170)。如果最低计数器值不是0(条件框168),那么指针可以移到预测器中的下一细条目(框172)。在一实施例中,指针可以等待移到下一组条目,直到加载或储存访问加载-储存相关性预测器。在另一实施例中,指针可以在下一时钟周期移到下一组条目。在框172之后,该方法可以返回到框160,分析组中的条目。图8所示的方法是替代策略的一个可行实施方式,在其他实施例中,可以使用其他替代策略(例如最近最少使用策略)。
下面参考图9,示出了系统180的一实施例的框图。如图所示,系统180可以代表桌面计算机190、膝上型计算机200、平板计算机210、蜂窝电话220或其他没备的芯片、电路系统、组件等。在所示实施例中,系统180包括连接到外部存储器182的IC10(图1)的至少一个实例。
IC10连接到一个或多个外围设备184和外部存储器182。还提供了电源186,其提供电源电压到IC10,以及提供一个或多个电源电压到存储器182和/或外部设备184。在各种实施例中,电源186可以代表电池(例如,智能电话、膝上型或平板计算机的可再充电电池)。在某些实施例中,可以包括IC10的超过一个实例(还可以包括不止一个外部存储器182)。
存储器182可以是任意类型的存储器,例如动态随机存取存储器(DRAM)、同步DRAM(SDRAM)、双倍数据速率(DDR、DDR2、DDR3等)SDRAM(包括SDRAM的移动版,例如mDDR3等,和/或SDRAM的低功率版,例如LPDDR2等)、Rambus DRAM(RDRAM)、静态RAM(SRAM)等。一个或多个存储器设备可以连接到电路板上以形成存储器模块,例如单列直插存储器模块(SIMM)、双列直插存储器模块(DIMM)等。替选地,设备可以安装有芯片上芯片配置、封装上封装配置或多芯片模块配置的IC88。
根据系统180的类型,外围设备184可以包括任意所需电路系统。例如在一实施例中,外围设备184可以包括用于各种类型的无线通信例如wifi、蓝牙、蜂窝、全球定位系统等的设备。外围设备184还可以包括其他储存器,包括RAM储存器、固态储存器或盘储存器。外围设备184可以包括用户接口设备,例如显示屏,包括触摸显示屏或多点触摸显示屏、键盘或其他输入设备、麦克风、扬声器等。
现在参照图10,示出了包括代表IC10(图1)中包括的电路系统的一个或多个数据结构的计算机可读介质230的框图的一个实施例。总体来说,计算机可读介质230可以包括任何非暂时性储存介质例如磁或光学介质,例如盘、CD-ROM或DVD-ROM,易失蜮非易失性储存介质例如RAM(例如,SDRAM、RDRAM、SRAM等)、ROM等,以及可通过经由竭信介质诸如网络和/或无线链路传输的传输介质或信号(例如电信号、电磁信号或数字信号)访问的介质。
通常,计算机可读介质230上的电路系统的数据结构可以直接或间接地通过程序读取和使用,以制造包括电路系统的硬件。例如,数据结构可以包括一个或多个采用高级设计语言(HDL)例如Verilog或VHDL编写的硬件功能的行为级描述语或寄存器传输级(RTL)描述语。该描述语可以通过合成工具读取,该合成工具可以合成描述语以产生一个或多个网表(netlist),网表包括来自合成库的门的列表。该网表包括一组门,其还表示包括该电路系统的硬件的功能。该网表然后可以被安置和路由以产生描述将要被应用到掩模的几何形状的一个或多个数据集。该掩模然后可以被用于各种半导体制造步骤,以制造与该电路系统对应的一个或多个半导咻电路。替选地,根据需要,计算机可读介质230上的数据结构可以是网表(具有或不具有合成库)或数据集。在另一噌选实施例中,数据结构可以包括示意性程序的输出,或从其导出的网表或数据集。
虽然计算机可读介质230包括IC10的表示,但是其他实施例可以包括IC10的任意部分(例如,LSD预测器37、LSU46)或部分的组合的表示。
根据某些实施例,图11和图12每个都示出了根据上述本发明的原理配置的加载-储存相关性预测器设备的功能框图。该设备的功能块可以通过硬件、软件、或硬件和软件的组合来实施,以执行本发明的原理。本领域技术人员将理解,图11和12所示的功能块可以组合或分为子块,以实施上述本发明的原理。因此,这里的描述可以支持这里描述的功能块的任何可行的组合或分离或进一步定义。
现在参考图11,在本发明的实施例中,加载-储存相关性预测器300可以包括预测单元310和相关性建立单元320。预测单元310可以如上所述地预测与较老储存操作相关的加载操作。如果对应的预测强度指示符在阈值以上,则相关性建立单元330可以为给定加载-储存对建立相关性。
加载-储存相关性预测器300还可以包括表维护单元330。表维护单元330可以维护具有条目的表(例如,图4中的表90),条目对应于已经导致先前的顺序违规的加载-储存对。表的每个条目可包括预测强度指示符。作为例子,当检测到新的加载-储存对时,表维护单元330可以使用每个计数器来对表中的对应条目进行评级,以用于替换。
加载-储存相关性预测器300还可以包括表搜索单元340。响应于检测到给定储存操作的派遣,表搜索单元340可以搜索表以寻找与给定储存操作对应的匹配条目。在一例子中,给定储存操作利用程序计数器(PC)的至少一部分来识别。如果返回了匹配条目,则激活单元350可以通过设置匹配条目中的激活位来激活匹配条目。在另一例子中,激活单元350可以仅在匹配条目的计数器值在阈值以上时,激活匹配条目。
响应于检测到给定加载操作的派遣,表搜索单元340还可以搜索表以寻找给定加载操作。如果找到激活的匹配条目且激活的匹配条目的计数器值在阈值以上,则给定加载操作带有相关性地被派遣,由此导致对应的储存操作在给定加载操作之前发布。
图12示出加载-储存相关性预测器400的另一实施例。在图12中,与图11类似的元件用类似的附图标记表示。
参考图12,加载-储存相关性预测器400可以包括预测单元410、预测强度分配单元460以及顺序强制单元470。预测单元410可以预测何时加载操作依赖于较老的储存操作。预测强度分配单元460可以为具有所预测的相关性的每个加载-储存对分配预测强度。响应于检测到相关联的预测强度在阈值以上,顺序强制单元470可以强制给定加载-储存对的执行顺序。
加载-储存相关性预测器400还可以包括表维护单元430。表维护单元430可以维护具有用于每个预测的加载硐存对的条目的表。每个条目可以包括加载标识符(ID)、储存ID、激活位和计数器。计数器可用于指示目应加载-储存对的预测强度。在一例子中,条目还可以包括储存ROB条目编号(RNUM)。
加载-储存相关性预测器400还可以包括表搜索单元440。响应于给定储存操作被检测到,表搜索单元440可以搜索表格以寻找对于给定储存操作的匹配。如果返回了匹配,且相应计数器在阈值以上,则激活单元450可以设置给定储存操作的匹配条目的激活位。表维护单元430可以将给定储存操作的RNUM储存在匹配条目中。
在一例子中,响应于给定加载操作被检测到,表搜索单元440还可以搜索表以寻找对给定加载操作的匹配。如果返回了匹配,且相应计数器在阈值以上,则相关性建立单元420可以建立给定加载操作对于给定储存操作的相关性。
在一例子中,相关性建立单元420可以将给定加载操作与给定储存操作的相关性指示符和RNUM一起派遣到给定保留站。
在一例子中,表维护单元430还可以基于计数器的值替换表的条目。
应注意,上述实施例仅仅是非限定性的实施方式,对于本领域技术人员而言,一旦充分理解了以上公开的内容,大量的变形和修改是显而易见的。以下权利要求旨在理解为涵盖全部这样的变形和修改。
Claims (14)
1.一种处理器,包括:
再排序缓冲器;
一个或多个保留站;以及
耦合到所述一个或多个保留站的加载-储存相关性预测器,其中,该加载-储存相关性预测器包括:
具有条目的表,其中,每个条目包括:
加载标识符、储存标识符、再排序缓冲器条目编号、预测指示符的强度和用于指示具有与相应的条目的储存标识符相匹配的储存操作已经被派遣的激活位;以及
电路系统,被配置为:
响应于检测到具有与储存在所述表的条目中的储存标识符相匹配的标识符的储存操作的派遣,为所述表中的所述条目设置激活位;
响应于检测到给定加载操作具有与具有已设置的激活位的给定条目的加载标识符相匹配的标识符:
预测所述给定加载操作依赖于具有与所述给定条目的储存标识符相匹配的标识符的给定储存操作;
响应于确定所述给定加载操作的数据从储存队列检索到,递增所述给定条目的预测指示符的强度;以及
响应于确定所述给定加载操作的数据从不同于所述储存队列的第二位置检索到,递减所述给定条目的预测指示符的强度,其中,所述第二位置是高速缓存。
2.如权利要求1所述的处理器,其中,所述表的每个条目的预测指示符的强度包括预测计数器的强度。
3.如权利要求1所述的处理器,其中,响应于检测到给定储存操作从保留站的发布,所述电路系统被配置为清除所述表中先前响应于所述给定储存操作的派遣而设置的激活位。
4.如权利要求2所述的处理器,其中,所述加载-储存相关性预测器的所述电路系统还配置为:
响应于检测到所述给定储存操作具有与所述给定条目的储存标识符相匹配的标识符并且确定所述给定条目的预测计数器的强度在阈值以上,设置所述给定条目的激活位;以及
在所述给定条目中储存所述给定储存操作的再排序缓冲器条目编号。
5.如权利要求4所述的处理器,其中,所述一个或多个保留站中的保留站将所述给定加载操作与所述给定条目的再排序缓冲器条目编号的标识一起储存。
6.如权利要求5所述的处理器,其中,响应于所述给定储存操作的发布:
广播所述给定储存操作的再排序缓冲器编号;
由储存所述给定加载操作的保留站检测所广播的再排序缓冲器编号;以及
响应于检测到所述给定储存操作的所广播的再排序缓冲器编号与和所述给定加载操作一起储存的再排序缓冲器条目编号的标识相匹配,允许发布所述给定加载操作。
7.如权利要求2所述的处理器,其中,所述表的每个条目还包括响应于可编程时间段的到期而递减的超龄计数器。
8.一种用于预测加载-储存相关性的方法,包括:
维护具有条目的表,其中,每个条目包括:
加载标识符、储存标识符、再排序缓冲器条目编号、预测指示符的强度和用于指示具有与相应的条目的储存标识符相匹配的标识符的储存操作已经被派遣的激活位;
响应于检测到具有与储存在所述表的条目中的储存标识符相匹配的标识符的储存操作的派遣,为所述表中的所述条目设置激活位;
响应于检测到给定加载操作具有与具有已设置的激活位的给定条目的加载标识符相匹配的标识符,预测所述给定加载操作依赖于具有与所述给定条目的储存标识符相匹配的标识符的给定储存操作;
响应于确定所述给定加载操作的数据从储存队列检索到,递增所述给定条目的预测指示符的强度;以及
响应于确定所述给定加载操作的数据从不同于所述储存队列的第二位置检索到,递减所述给定条目的预测指示符的强度,其中,所述第二位置是高速缓存。
9.如权利要求8所述的方法,还包括:
派遣具有特定标识符的给定加载操作;
搜索所述表以寻找与所述特定标识符相匹配的加载标识符;以及
响应于发现具有与所述特定标识符相匹配的加载标识符和已设置的激活位的单个条目,建立所述给定加载操作与对应于所述单个条目的再排序缓冲器条目编号的储存操作之间的相关性。
10.如权利要求8所述的方法,还包括:
派遣具有特定标识符的给定加载操作;
搜索所述表以寻找与所述特定标识符相匹配的加载标识符;以及
响应于发现多个匹配条目,每个匹配条目具有与所述特定标识符相匹配的加载标识符和已设置的激活位,建立所述给定加载操作与多个储存操作之间的相关性。
11.如权利要求9所述的方法,还包括:
将所述给定加载操作与所述单个条目的再排序缓冲器条目编号的标识一起储存在保留站中;
响应于与所述单个条目的再排序缓冲器条目编号对应的储存操作的发布,广播所述单个条目的再排序缓冲器条目编号;以及
响应于检测到所广播的再排序缓冲器编号条目,允许从所述保留站发布所述给定加载操作。
12.如权利要求10所述的方法,还包括:
响应于建立所述相关性,识别多个保留站中的每个保留站中的最老储存操作;以及
响应于所有所标识的最老储存操作从所述多个保留站中的相应的保留站发布,允许所述给定加载操作从所述多个保留站中的保留站发布。
13.如权利要求8所述的方法,其中,所述表的每个条目包括响应于可编程时间段的到期而递减的超龄计数器。
14.如权利要求10所述的方法,还包括响应于比所述给定加载操作老的所有储存操作的发布,允许所述给定加载操作从保留站发布。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/464,647 US9128725B2 (en) | 2012-05-04 | 2012-05-04 | Load-store dependency predictor content management |
US13/464,647 | 2012-05-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103455309A CN103455309A (zh) | 2013-12-18 |
CN103455309B true CN103455309B (zh) | 2016-12-28 |
Family
ID=48190741
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310323392.0A Active CN103455309B (zh) | 2012-05-04 | 2013-05-03 | 加载‑储存相关性预测器内容管理 |
Country Status (8)
Country | Link |
---|---|
US (1) | US9128725B2 (zh) |
EP (1) | EP2660716B1 (zh) |
JP (2) | JP2013239166A (zh) |
KR (2) | KR20130124221A (zh) |
CN (1) | CN103455309B (zh) |
BR (1) | BR102013010877B1 (zh) |
TW (2) | TW201403463A (zh) |
WO (1) | WO2013165754A1 (zh) |
Families Citing this family (96)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013100783A1 (en) | 2011-12-29 | 2013-07-04 | Intel Corporation | Method and system for control signalling in a data path module |
US9128725B2 (en) * | 2012-05-04 | 2015-09-08 | Apple Inc. | Load-store dependency predictor content management |
US9600289B2 (en) | 2012-05-30 | 2017-03-21 | Apple Inc. | Load-store dependency predictor PC hashing |
US8880829B2 (en) * | 2012-11-19 | 2014-11-04 | Qualcomm Innovation Center, Inc. | Method and apparatus for efficient, low-latency, streaming memory copies |
US10467010B2 (en) * | 2013-03-15 | 2019-11-05 | Intel Corporation | Method and apparatus for nearest potential store tagging |
US9116817B2 (en) * | 2013-05-09 | 2015-08-25 | Apple Inc. | Pointer chasing prediction |
US9619750B2 (en) * | 2013-06-29 | 2017-04-11 | Intel Corporation | Method and apparatus for store dependence prediction |
US10331583B2 (en) | 2013-09-26 | 2019-06-25 | Intel Corporation | Executing distributed memory operations using processing elements connected by distributed channels |
US9286073B2 (en) * | 2014-01-07 | 2016-03-15 | Samsung Electronics Co., Ltd. | Read-after-write hazard predictor employing confidence and sampling |
US11093401B2 (en) * | 2014-03-11 | 2021-08-17 | Ampere Computing Llc | Hazard prediction for a group of memory access instructions using a buffer associated with branch prediction |
US9710268B2 (en) | 2014-04-29 | 2017-07-18 | Apple Inc. | Reducing latency for pointer chasing loads |
US10209995B2 (en) * | 2014-10-24 | 2019-02-19 | International Business Machines Corporation | Processor core including pre-issue load-hit-store (LHS) hazard prediction to reduce rejection of load instructions |
US10127046B2 (en) | 2014-12-14 | 2018-11-13 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude uncacheable-dependent load replays in out-of-order processor |
EP3055768B1 (en) | 2014-12-14 | 2018-10-31 | VIA Alliance Semiconductor Co., Ltd. | Mechanism to preclude uncacheable-dependent load replays in out-of-order processor |
WO2016097792A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude load replays dependent on write combining memory space access in out-of-order processor |
US10120689B2 (en) | 2014-12-14 | 2018-11-06 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor |
US10175984B2 (en) | 2014-12-14 | 2019-01-08 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor |
US10114646B2 (en) | 2014-12-14 | 2018-10-30 | Via Alliance Semiconductor Co., Ltd | Programmable load replay precluding mechanism |
EP3055769B1 (en) * | 2014-12-14 | 2018-10-31 | VIA Alliance Semiconductor Co., Ltd. | Mechanism to preclude load replays dependent on page walks in out-of-order processor |
US10108428B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor |
US10228944B2 (en) | 2014-12-14 | 2019-03-12 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method for programmable load replay preclusion |
US10146547B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor |
KR101820221B1 (ko) | 2014-12-14 | 2018-02-28 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 프로그래머블 로드 리플레이 억제 메커니즘 |
US9703359B2 (en) | 2014-12-14 | 2017-07-11 | Via Alliance Semiconductor Co., Ltd. | Power saving mechanism to reduce load replays in out-of-order processor |
WO2016097811A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude load replays dependent on fuse array access in out-of-order processor |
US9804845B2 (en) * | 2014-12-14 | 2017-10-31 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude X86 special bus cycle load replays in an out-of-order processor |
US10083038B2 (en) | 2014-12-14 | 2018-09-25 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on page walks in an out-of-order processor |
WO2016097797A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Load replay precluding mechanism |
US10146539B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd. | Load replay precluding mechanism |
US10108429B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude shared RAM-dependent load replays in an out-of-order processor |
JP6286065B2 (ja) * | 2014-12-14 | 2018-02-28 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アウトオブオーダープロセッサの書き込み結合メモリ領域アクセスに依存するロードリプレイを除外する装置及び方法 |
US10088881B2 (en) | 2014-12-14 | 2018-10-02 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude I/O-dependent load replays in an out-of-order processor |
WO2016097796A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude i/o-dependent load replays in out-of-order processor |
US10108420B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor |
US10089112B2 (en) * | 2014-12-14 | 2018-10-02 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor |
US10146540B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor |
US10108421B2 (en) * | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude shared ram-dependent load replays in an out-of-order processor |
US10108430B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor |
US9740271B2 (en) | 2014-12-14 | 2017-08-22 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude X86 special bus cycle load replays in an out-of-order processor |
US10635446B2 (en) * | 2015-09-24 | 2020-04-28 | Qualcomm Incorporated | Reconfiguring execution pipelines of out-of-order (OOO) computer processors based on phase training and prediction |
CN105117202B (zh) * | 2015-09-25 | 2018-11-27 | 上海兆芯集成电路有限公司 | 具有融合保留站结构的微处理器 |
US9606805B1 (en) | 2015-10-19 | 2017-03-28 | International Business Machines Corporation | Accuracy of operand store compare prediction using confidence counter |
US10514925B1 (en) | 2016-01-28 | 2019-12-24 | Apple Inc. | Load speculation recovery |
US10437595B1 (en) | 2016-03-15 | 2019-10-08 | Apple Inc. | Load/store dependency predictor optimization for replayed loads |
US20170286114A1 (en) * | 2016-04-02 | 2017-10-05 | Intel Corporation | Processors, methods, and systems to allocate load and store buffers based on instruction type |
US20170315812A1 (en) | 2016-04-28 | 2017-11-02 | Microsoft Technology Licensing, Llc | Parallel instruction scheduler for block isa processor |
US10740107B2 (en) * | 2016-06-01 | 2020-08-11 | International Business Machines Corporation | Operation of a multi-slice processor implementing load-hit-store handling |
US10067762B2 (en) * | 2016-07-01 | 2018-09-04 | Intel Corporation | Apparatuses, methods, and systems for memory disambiguation |
US20190303743A1 (en) | 2016-08-13 | 2019-10-03 | Intel Corporation | Apparatuses, methods, and systems for neural networks |
US11048506B2 (en) * | 2016-08-19 | 2021-06-29 | Advanced Micro Devices, Inc. | Tracking stores and loads by bypassing load store units |
CN106406822B (zh) * | 2016-09-18 | 2019-02-15 | 上海兆芯集成电路有限公司 | 具有改进的别名队列和存储冲突检测的处理器 |
US10684859B2 (en) * | 2016-09-19 | 2020-06-16 | Qualcomm Incorporated | Providing memory dependence prediction in block-atomic dataflow architectures |
US20180081806A1 (en) * | 2016-09-22 | 2018-03-22 | Qualcomm Incorporated | Memory violation prediction |
US10402168B2 (en) | 2016-10-01 | 2019-09-03 | Intel Corporation | Low energy consumption mantissa multiplication for floating point multiply-add operations |
US10558575B2 (en) | 2016-12-30 | 2020-02-11 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10572376B2 (en) | 2016-12-30 | 2020-02-25 | Intel Corporation | Memory ordering in acceleration hardware |
US10416999B2 (en) | 2016-12-30 | 2019-09-17 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10474375B2 (en) * | 2016-12-30 | 2019-11-12 | Intel Corporation | Runtime address disambiguation in acceleration hardware |
US10469397B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods with configurable network-based dataflow operator circuits |
US10467183B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods for pipelined runtime services in a spatial array |
US10445234B2 (en) | 2017-07-01 | 2019-10-15 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features |
US10515046B2 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10387319B2 (en) | 2017-07-01 | 2019-08-20 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features |
US10445451B2 (en) | 2017-07-01 | 2019-10-15 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features |
US10515049B1 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Memory circuits and methods for distributed memory hazard detection and error recovery |
EP3651792A1 (en) | 2017-07-11 | 2020-05-20 | Pfizer Inc | Immunogenic compositions comprising cea muc1 and tert |
US10725782B2 (en) * | 2017-09-12 | 2020-07-28 | Qualcomm Incorporated | Providing variable interpretation of usefulness indicators for memory tables in processor-based systems |
US10496574B2 (en) | 2017-09-28 | 2019-12-03 | Intel Corporation | Processors, methods, and systems for a memory fence in a configurable spatial accelerator |
US11086816B2 (en) | 2017-09-28 | 2021-08-10 | Intel Corporation | Processors, methods, and systems for debugging a configurable spatial accelerator |
US10380063B2 (en) | 2017-09-30 | 2019-08-13 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator |
US10445098B2 (en) | 2017-09-30 | 2019-10-15 | Intel Corporation | Processors and methods for privileged configuration in a spatial array |
US10445250B2 (en) | 2017-12-30 | 2019-10-15 | Intel Corporation | Apparatus, methods, and systems with a configurable spatial accelerator |
US10565134B2 (en) | 2017-12-30 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for multicast in a configurable spatial accelerator |
US10417175B2 (en) | 2017-12-30 | 2019-09-17 | Intel Corporation | Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator |
US10387311B2 (en) | 2018-01-11 | 2019-08-20 | International Business Machines Corporation | Cache directory that determines current state of a translation in a microprocessor core cache |
US11307873B2 (en) | 2018-04-03 | 2022-04-19 | Intel Corporation | Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging |
US10564980B2 (en) | 2018-04-03 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator |
CN108920191B (zh) * | 2018-06-05 | 2020-11-20 | 上海兆芯集成电路有限公司 | 处理器电路及其操作方法 |
US11099846B2 (en) * | 2018-06-20 | 2021-08-24 | Advanced Micro Devices, Inc. | Apparatus and method for resynchronization prediction with variable upgrade and downgrade capability |
US11200186B2 (en) | 2018-06-30 | 2021-12-14 | Intel Corporation | Apparatuses, methods, and systems for operations in a configurable spatial accelerator |
US10891240B2 (en) | 2018-06-30 | 2021-01-12 | Intel Corporation | Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator |
US10853073B2 (en) | 2018-06-30 | 2020-12-01 | Intel Corporation | Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator |
US10459866B1 (en) | 2018-06-30 | 2019-10-29 | Intel Corporation | Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator |
US10678724B1 (en) | 2018-12-29 | 2020-06-09 | Intel Corporation | Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator |
US11113055B2 (en) | 2019-03-19 | 2021-09-07 | International Business Machines Corporation | Store instruction to store instruction dependency |
US11243774B2 (en) | 2019-03-20 | 2022-02-08 | International Business Machines Corporation | Dynamic selection of OSC hazard avoidance mechanism |
US10929142B2 (en) | 2019-03-20 | 2021-02-23 | International Business Machines Corporation | Making precise operand-store-compare predictions to avoid false dependencies |
US11029927B2 (en) | 2019-03-30 | 2021-06-08 | Intel Corporation | Methods and apparatus to detect and annotate backedges in a dataflow graph |
US10965536B2 (en) | 2019-03-30 | 2021-03-30 | Intel Corporation | Methods and apparatus to insert buffers in a dataflow graph |
US10915471B2 (en) | 2019-03-30 | 2021-02-09 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator |
US10817291B2 (en) | 2019-03-30 | 2020-10-27 | Intel Corporation | Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator |
US11037050B2 (en) | 2019-06-29 | 2021-06-15 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator |
US11907713B2 (en) | 2019-12-28 | 2024-02-20 | Intel Corporation | Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator |
US11392410B2 (en) * | 2020-04-08 | 2022-07-19 | Microsoft Technology Licensing, Llc | Operand pool instruction reservation clustering in a scheduler circuit in a processor |
US11474821B1 (en) | 2021-05-12 | 2022-10-18 | International Business Machines Corporation | Processor dependency-aware instruction execution |
KR20230063791A (ko) * | 2021-11-02 | 2023-05-09 | 리벨리온 주식회사 | 인공지능 코어, 인공지능 코어 시스템 및 인공지능 코어 시스템의 로드/스토어 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5781752A (en) * | 1996-12-26 | 1998-07-14 | Wisconsin Alumni Research Foundation | Table based data speculation circuit for parallel processing computer |
CN1415088A (zh) * | 2000-01-03 | 2003-04-30 | 先进微装置公司 | 具有不训练的存储至加载转送预测器 |
US6658554B1 (en) * | 1999-03-09 | 2003-12-02 | Wisconsin Alumni Res Found | Electronic processor providing direct data transfer between linked data consuming instructions |
Family Cites Families (91)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4521851A (en) | 1982-10-13 | 1985-06-04 | Honeywell Information Systems Inc. | Central processor |
US4594660A (en) | 1982-10-13 | 1986-06-10 | Honeywell Information Systems Inc. | Collector |
US4860199A (en) | 1987-07-31 | 1989-08-22 | Prime Computer, Inc. | Hashing indexer for branch cache |
US5487156A (en) | 1989-12-15 | 1996-01-23 | Popescu; Valeri | Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched |
US5276825A (en) | 1991-03-12 | 1994-01-04 | Chips & Technologies, Inc. | Apparatus for quickly determining actual jump addresses by assuming each instruction of a plurality of fetched instructions is a jump instruction |
US5488729A (en) | 1991-05-15 | 1996-01-30 | Ross Technology, Inc. | Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution |
US5440752A (en) | 1991-07-08 | 1995-08-08 | Seiko Epson Corporation | Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU |
JPH0820949B2 (ja) | 1991-11-26 | 1996-03-04 | 松下電器産業株式会社 | 情報処理装置 |
DE4237417C2 (de) | 1992-03-25 | 1997-01-30 | Hewlett Packard Co | Datenverarbeitungssystem |
JP3199465B2 (ja) | 1992-07-22 | 2001-08-20 | 株式会社日立製作所 | 情報処理装置 |
EP0663083B1 (en) | 1992-09-29 | 2000-12-20 | Seiko Epson Corporation | System and method for handling load and/or store operations in a superscalar microprocessor |
US5619662A (en) | 1992-11-12 | 1997-04-08 | Digital Equipment Corporation | Memory reference tagging |
US5467473A (en) | 1993-01-08 | 1995-11-14 | International Business Machines Corporation | Out of order instruction load and store comparison |
GB2281442B (en) | 1993-08-24 | 1997-06-11 | News Distribution Limited | Manufacture of wound capacitors |
EP0651331B1 (en) | 1993-10-18 | 2002-01-09 | National Semiconductor Corporation | A write buffer for a superpipelined, superscalar microprocessor |
US5471598A (en) | 1993-10-18 | 1995-11-28 | Cyrix Corporation | Data dependency detection and handling in a microprocessor with write buffer |
DE69429061T2 (de) | 1993-10-29 | 2002-07-18 | Advanced Micro Devices Inc | Superskalarmikroprozessoren |
US5878245A (en) | 1993-10-29 | 1999-03-02 | Advanced Micro Devices, Inc. | High performance load/store functional unit and data cache |
US5588126A (en) | 1993-12-30 | 1996-12-24 | Intel Corporation | Methods and apparatus for fordwarding buffered store data on an out-of-order execution computer system |
US5465336A (en) | 1994-06-30 | 1995-11-07 | International Business Machines Corporation | Fetch and store buffer that enables out-of-order execution of memory instructions in a data processing system |
US6216200B1 (en) | 1994-10-14 | 2001-04-10 | Mips Technologies, Inc. | Address queue |
US5666506A (en) | 1994-10-24 | 1997-09-09 | International Business Machines Corporation | Apparatus to dynamically control the out-of-order execution of load/store instructions in a processor capable of dispatchng, issuing and executing multiple instructions in a single processor cycle |
US5625789A (en) | 1994-10-24 | 1997-04-29 | International Business Machines Corporation | Apparatus for source operand dependendency analyses register renaming and rapid pipeline recovery in a microprocessor that issues and executes multiple instructions out-of-order in a single cycle |
US5784586A (en) | 1995-02-14 | 1998-07-21 | Fujitsu Limited | Addressing method for executing load instructions out of order with respect to store instructions |
US5832297A (en) | 1995-04-12 | 1998-11-03 | Advanced Micro Devices, Inc. | Superscalar microprocessor load/store unit employing a unified buffer and separate pointers for load and store operations |
US5802588A (en) | 1995-04-12 | 1998-09-01 | Advanced Micro Devices, Inc. | Load/store unit implementing non-blocking loads for a superscalar microprocessor and method of selecting loads in a non-blocking fashion from a load/store buffer |
US5887152A (en) | 1995-04-12 | 1999-03-23 | Advanced Micro Devices, Inc. | Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions |
US5625835A (en) | 1995-05-10 | 1997-04-29 | International Business Machines Corporation | Method and apparatus for reordering memory operations in a superscalar or very long instruction word processor |
US5761712A (en) | 1995-06-07 | 1998-06-02 | Advanced Micro Devices | Data memory unit and method for storing data into a lockable cache in one clock cycle by previewing the tag array |
US5717883A (en) | 1995-06-28 | 1998-02-10 | Digital Equipment Corporation | Method and apparatus for parallel execution of computer programs using information providing for reconstruction of a logical sequential program |
US5652859A (en) | 1995-08-17 | 1997-07-29 | Institute For The Development Of Emerging Architectures, L.L.C. | Method and apparatus for handling snoops in multiprocessor caches having internal buffer queues |
US5710902A (en) | 1995-09-06 | 1998-01-20 | Intel Corporation | Instruction dependency chain indentifier |
US5751983A (en) | 1995-10-03 | 1998-05-12 | Abramson; Jeffrey M. | Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations |
US5754812A (en) | 1995-10-06 | 1998-05-19 | Advanced Micro Devices, Inc. | Out-of-order load/store execution control |
US5835747A (en) | 1996-01-26 | 1998-11-10 | Advanced Micro Devices, Inc. | Hierarchical scan logic for out-of-order load/store execution control |
US5799165A (en) | 1996-01-26 | 1998-08-25 | Advanced Micro Devices, Inc. | Out-of-order processing that removes an issued operation from an execution pipeline upon determining that the operation would cause a lengthy pipeline delay |
US5781790A (en) | 1995-12-29 | 1998-07-14 | Intel Corporation | Method and apparatus for performing floating point to integer transfers and vice versa |
US5822559A (en) | 1996-01-02 | 1998-10-13 | Advanced Micro Devices, Inc. | Apparatus and method for aligning variable byte-length instructions to a plurality of issue positions |
US5742791A (en) | 1996-02-14 | 1998-04-21 | Advanced Micro Devices, Inc. | Apparatus for detecting updates to instructions which are within an instruction processing pipeline of a microprocessor |
US5748978A (en) | 1996-05-17 | 1998-05-05 | Advanced Micro Devices, Inc. | Byte queue divided into multiple subqueues for optimizing instruction selection logic |
US6016540A (en) | 1997-01-08 | 2000-01-18 | Intel Corporation | Method and apparatus for scheduling instructions in waves |
US5923862A (en) | 1997-01-28 | 1999-07-13 | Samsung Electronics Co., Ltd. | Processor that decodes a multi-cycle instruction into single-cycle micro-instructions and schedules execution of the micro-instructions |
US5768555A (en) | 1997-02-20 | 1998-06-16 | Advanced Micro Devices, Inc. | Reorder buffer employing last in buffer and last in line bits |
US5996068A (en) | 1997-03-26 | 1999-11-30 | Lucent Technologies Inc. | Method and apparatus for renaming registers corresponding to multiple thread identifications |
US6021485A (en) | 1997-04-10 | 2000-02-01 | International Business Machines Corporation | Forwarding store instruction result to load instruction with reduced stall or flushing by effective/real data address bytes matching |
US5850533A (en) | 1997-06-25 | 1998-12-15 | Sun Microsystems, Inc. | Method for enforcing true dependencies in an out-of-order processor |
US6108770A (en) * | 1998-06-24 | 2000-08-22 | Digital Equipment Corporation | Method and apparatus for predicting memory dependence using store sets |
US6122727A (en) | 1998-08-24 | 2000-09-19 | Advanced Micro Devices, Inc. | Symmetrical instructions queue for high clock frequency scheduling |
US6212623B1 (en) | 1998-08-24 | 2001-04-03 | Advanced Micro Devices, Inc. | Universal dependency vector/queue entry |
US6212622B1 (en) | 1998-08-24 | 2001-04-03 | Advanced Micro Devices, Inc. | Mechanism for load block on store address generation |
US6141747A (en) | 1998-09-22 | 2000-10-31 | Advanced Micro Devices, Inc. | System for store to load forwarding of individual bytes from separate store buffer entries to form a single load word |
US6393536B1 (en) | 1999-05-18 | 2002-05-21 | Advanced Micro Devices, Inc. | Load/store unit employing last-in-buffer indication for rapid load-hit-store |
US6266744B1 (en) | 1999-05-18 | 2001-07-24 | Advanced Micro Devices, Inc. | Store to load forwarding using a dependency link file |
US6728867B1 (en) | 1999-05-21 | 2004-04-27 | Intel Corporation | Method for comparing returned first load data at memory address regardless of conflicting with first load and any instruction executed between first load and check-point |
US6625723B1 (en) | 1999-07-07 | 2003-09-23 | Intel Corporation | Unified renaming scheme for load and store instructions |
US6481251B1 (en) | 1999-10-25 | 2002-11-19 | Advanced Micro Devices, Inc. | Store queue number assignment and tracking |
US6523109B1 (en) | 1999-10-25 | 2003-02-18 | Advanced Micro Devices, Inc. | Store queue multimatch detection |
US6658559B1 (en) | 1999-12-31 | 2003-12-02 | Intel Corporation | Method and apparatus for advancing load operations |
US6502185B1 (en) | 2000-01-03 | 2002-12-31 | Advanced Micro Devices, Inc. | Pipeline elements which verify predecode information |
US6694424B1 (en) * | 2000-01-03 | 2004-02-17 | Advanced Micro Devices, Inc. | Store load forward predictor training |
US6622237B1 (en) | 2000-01-03 | 2003-09-16 | Advanced Micro Devices, Inc. | Store to load forward predictor training using delta tag |
US6542984B1 (en) | 2000-01-03 | 2003-04-01 | Advanced Micro Devices, Inc. | Scheduler capable of issuing and reissuing dependency chains |
US6678807B2 (en) | 2000-12-21 | 2004-01-13 | Intel Corporation | System and method for multiple store buffer forwarding in a system with a restrictive memory model |
US6571318B1 (en) | 2001-03-02 | 2003-05-27 | Advanced Micro Devices, Inc. | Stride based prefetcher with confidence counter and dynamic prefetch-ahead mechanism |
JP3729087B2 (ja) | 2001-05-23 | 2005-12-21 | 日本電気株式会社 | マルチプロセッサシステム、データ依存投機実行制御装置およびその方法 |
US20030065909A1 (en) | 2001-09-28 | 2003-04-03 | Jourdan Stephan J. | Deferral of dependent loads until after execution of colliding stores |
US20030126409A1 (en) | 2001-12-28 | 2003-07-03 | Toni Juan | Store sets poison propagation |
US6918030B2 (en) | 2002-01-10 | 2005-07-12 | International Business Machines Corporation | Microprocessor for executing speculative load instructions with retry of speculative load instruction without calling any recovery procedures |
US7062617B2 (en) | 2002-03-26 | 2006-06-13 | Intel Corporation | Method and apparatus for satisfying load operations |
US7181598B2 (en) | 2002-05-17 | 2007-02-20 | Intel Corporation | Prediction of load-store dependencies in a processing agent |
US7590830B2 (en) * | 2004-05-28 | 2009-09-15 | Sun Microsystems, Inc. | Method and structure for concurrent branch prediction in a processor |
US7415597B2 (en) | 2004-09-08 | 2008-08-19 | Advanced Micro Devices, Inc. | Processor with dependence mechanism to predict whether a load is dependent on older store |
US7506105B2 (en) | 2005-05-02 | 2009-03-17 | Freescale Semiconductor, Inc. | Prefetching using hashed program counter |
US7376817B2 (en) | 2005-08-10 | 2008-05-20 | P.A. Semi, Inc. | Partial load/store forward prediction |
US7590825B2 (en) | 2006-03-07 | 2009-09-15 | Intel Corporation | Counter-based memory disambiguation techniques for selectively predicting load/store conflicts |
JP2007293814A (ja) * | 2006-03-28 | 2007-11-08 | Handotai Rikougaku Kenkyu Center:Kk | プロセッサ装置とその処理方法 |
US7461238B2 (en) | 2006-06-07 | 2008-12-02 | International Business Machines Corporation | Simple load and store disambiguation and scheduling at predecode |
GB2445965B (en) * | 2007-01-26 | 2011-05-04 | Advanced Risc Mach Ltd | Entry replacement within a data store |
US20080209190A1 (en) | 2007-02-28 | 2008-08-28 | Advanced Micro Devices, Inc. | Parallel prediction of multiple branches |
US8200992B2 (en) | 2007-09-24 | 2012-06-12 | Cognitive Electronics, Inc. | Parallel processing computer systems with reduced power consumption and methods for providing the same |
US8151084B2 (en) | 2008-01-23 | 2012-04-03 | Oracle America, Inc. | Using address and non-address information for improved index generation for cache memories |
US8566565B2 (en) | 2008-07-10 | 2013-10-22 | Via Technologies, Inc. | Microprocessor with multiple operating modes dynamically configurable by a device driver based on currently running applications |
US8285947B2 (en) | 2009-02-06 | 2012-10-09 | Apple Inc. | Store hit load predictor |
US8423751B2 (en) | 2009-03-04 | 2013-04-16 | Via Technologies, Inc. | Microprocessor with fast execution of call and return instructions |
US8099566B2 (en) | 2009-05-15 | 2012-01-17 | Oracle America, Inc. | Load/store ordering in a threaded out-of-order processor |
US20100325395A1 (en) | 2009-06-19 | 2010-12-23 | Doug Burger | Dependence prediction in a memory system |
US8768313B2 (en) | 2009-08-17 | 2014-07-01 | Digimarc Corporation | Methods and systems for image or audio recognition processing |
US8635428B2 (en) | 2009-12-09 | 2014-01-21 | Oracle America, Inc. | Preventing duplicate entries in a non-blocking TLB structure that supports multiple page sizes |
US8521992B2 (en) | 2009-12-22 | 2013-08-27 | International Business Machines Corporation | Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors |
US9128725B2 (en) * | 2012-05-04 | 2015-09-08 | Apple Inc. | Load-store dependency predictor content management |
US9600289B2 (en) | 2012-05-30 | 2017-03-21 | Apple Inc. | Load-store dependency predictor PC hashing |
-
2012
- 2012-05-04 US US13/464,647 patent/US9128725B2/en active Active
-
2013
- 2013-04-23 WO PCT/US2013/037809 patent/WO2013165754A1/en active Application Filing
- 2013-04-25 EP EP13165284.4A patent/EP2660716B1/en active Active
- 2013-05-02 JP JP2013096795A patent/JP2013239166A/ja active Pending
- 2013-05-02 BR BR102013010877-4A patent/BR102013010877B1/pt active IP Right Grant
- 2013-05-03 TW TW102115961A patent/TW201403463A/zh unknown
- 2013-05-03 CN CN201310323392.0A patent/CN103455309B/zh active Active
- 2013-05-03 TW TW104113982A patent/TWI529617B/zh active
- 2013-05-03 KR KR1020130049975A patent/KR20130124221A/ko not_active Application Discontinuation
-
2015
- 2015-06-09 KR KR1020150081361A patent/KR101555166B1/ko active IP Right Grant
- 2015-08-17 JP JP2015160285A patent/JP5965041B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5781752A (en) * | 1996-12-26 | 1998-07-14 | Wisconsin Alumni Research Foundation | Table based data speculation circuit for parallel processing computer |
US6658554B1 (en) * | 1999-03-09 | 2003-12-02 | Wisconsin Alumni Res Found | Electronic processor providing direct data transfer between linked data consuming instructions |
CN1415088A (zh) * | 2000-01-03 | 2003-04-30 | 先进微装置公司 | 具有不训练的存储至加载转送预测器 |
Also Published As
Publication number | Publication date |
---|---|
KR20130124221A (ko) | 2013-11-13 |
WO2013165754A1 (en) | 2013-11-07 |
TW201531939A (zh) | 2015-08-16 |
BR102013010877B1 (pt) | 2021-07-06 |
US20130298127A1 (en) | 2013-11-07 |
US9128725B2 (en) | 2015-09-08 |
TWI529617B (zh) | 2016-04-11 |
EP2660716B1 (en) | 2016-11-02 |
KR20150075067A (ko) | 2015-07-02 |
TW201403463A (zh) | 2014-01-16 |
CN103455309A (zh) | 2013-12-18 |
KR101555166B1 (ko) | 2015-09-22 |
BR102013010877A2 (pt) | 2015-06-30 |
JP2015232902A (ja) | 2015-12-24 |
EP2660716A1 (en) | 2013-11-06 |
JP2013239166A (ja) | 2013-11-28 |
JP5965041B2 (ja) | 2016-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103455309B (zh) | 加载‑储存相关性预测器内容管理 | |
US9710268B2 (en) | Reducing latency for pointer chasing loads | |
US9600289B2 (en) | Load-store dependency predictor PC hashing | |
CN105453041B (zh) | 用于高速缓存占据确定和指令调度的方法和装置 | |
CN108268282A (zh) | 用以检查和存储对存储器地址是否在持久存储器中的指示的处理器、方法、系统和指令 | |
CN103593167B (zh) | 循环缓冲器学习 | |
CN100495325C (zh) | 用于按需临时寄存器重命名的方法和系统 | |
CN108351830A (zh) | 用于存储器损坏检测的硬件装置和方法 | |
TW200422948A (en) | Data speculation based on addressing patterns identifying dual-purpose register | |
CN103513964A (zh) | 循环缓冲器打包 | |
US9201658B2 (en) | Branch predictor for wide issue, arbitrarily aligned fetch that can cross cache line boundaries | |
CN108228094A (zh) | 存储器侧高速缓存中通路的伺机增加 | |
CN110162380A (zh) | 用来防止软件侧通道的机制 | |
CN108431775A (zh) | 用于高效并行计算的简化的基于任务的运行时的方法 | |
CN105027137B (zh) | 用于针对增强型安全检查的页走查扩展的装置和方法 | |
US20220091846A1 (en) | Atomic Operation Predictor | |
US11175917B1 (en) | Buffer for replayed loads in parallel with reservation station for rapid rescheduling | |
US10983801B2 (en) | Load/store ordering violation management | |
US11379240B2 (en) | Indirect branch predictor based on register operands | |
US20080282050A1 (en) | Methods and arrangements for controlling memory operations | |
Zou et al. | A design of fetch target buffer implemented on XiangShan processor | |
Castro et al. | Memory disambiguation hardware: a review | |
Castro et al. | Using age registers for a simple load–store queue filtering | |
Zhang et al. | Active Store Window: Enabling Far Store-Load Forwarding with Scalability and Complexity-Efficiency | |
Roth | EXPLOITING AGGRESSIVE MEMORY DEPENDENCE SPECULATION TO SIMPLIFY THE STORE-LOAD DATAPATH Tingting Sha |
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 |