CN106951217B - 由易于得到的预取器准确性动态控制的指令预取器 - Google Patents
由易于得到的预取器准确性动态控制的指令预取器 Download PDFInfo
- Publication number
- CN106951217B CN106951217B CN201610973966.2A CN201610973966A CN106951217B CN 106951217 B CN106951217 B CN 106951217B CN 201610973966 A CN201610973966 A CN 201610973966A CN 106951217 B CN106951217 B CN 106951217B
- Authority
- CN
- China
- Prior art keywords
- instruction
- branch prediction
- predicted
- queue
- instructions
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 claims description 28
- 230000004044 response Effects 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000004519 manufacturing process Methods 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 230000009977 dual effect Effects 0.000 description 3
- 238000002513 implantation Methods 0.000 description 3
- 230000010365 information processing Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000000919 ceramic Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 239000007943 implant Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 239000003826 tablet Substances 0.000 description 1
- 230000000007 visual effect Effects 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/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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- 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
-
- 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
- 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
- G06F2212/1021—Hit rate 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/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
一种由易于得到的预取器准确性动态控制的指令预取器。根据一个总体方面,设备可包括分支预测单元、提取单元和预取器电路或单元。分支预测单元可被配置为输出预测的指令。提取单元可被配置为从高速缓冲存储器提取下一指令。预取器电路可被配置为基于预测的指令与下一指令之间的关系将先前预测的指令预取到高速缓冲存储器中。
Description
本申请要求于2016年1月7日提交的发明名称为“由易于得到的预取器准确性动态控制的指令预取器”的第62/276,067号美国临时专利申请以及于2016年4月18日提交的第15/132,230号美国非临时专利申请的优先权。本先前提交的申请的主题通过引用包含于此。
技术领域
本描述涉及预取数据,更具体地讲,涉及指令预取的控制。
背景技术
在计算机系统架构中,指令预取是一种用于通过减少等待状态来加速程序的执行的技术。预取一般发生在处理器或处理器的子单元(例如,预取单元)在实际需要指令或数据块之前向主存储器请求指令或数据块时。一旦指令/数据块从主存储器或系统存储器返回,则指令/数据块通常被放置在高速缓冲存储器中。当做出从高速缓冲存储器访问指令/数据块的请求时,相比于假设必须向主存储器或系统存储器做出请求的情况,从高速缓冲存储器访问指令/数据块可快地多。因此,预取隐藏了存储器访问延迟。
由于程序一般被顺序地执行,因此,当以程序的顺序对指令进行预取时,性能很可能最佳。可选地,预取可以是复杂分支预测算法的一部分,其中,处理器尝试预期计算的结果,并提前预取正确的指令。
在计算机系统架构中,分支预测器或分支预测单元是试图在结果被实际计算出并已知之前预测将进行分支(例如,如果-则-否则(if-then-else)结构、跳转指令)的哪个路径的数字电路。分支预测器的目的通常是为了提高指令流水线中的流量。在很多现代流水线的微处理器系统架构中,分支预测器在实现高效性能方面扮演极其重要的角色。
双路分支通常使用条件跳转指令来实现。条件跳转可以为“不跳转(not taken)”并使用紧跟在条件分支之后的代码的第一分支来继续执行,或者条件跳转可以为“跳转(taken)”并跳转到存储代码的第二分支的程序存储器中的不同的位置。通常不能确定地知道条件跳转将是跳转还是不跳转,直到条件已被计算并且条件分支已经转到指令流水线中的执行阶段为止。
在没有分支预测的情况下,处理器通常将不得不等待,直到流水线中在下一指令可进入提取阶段之前条件跳转指令已经转到执行阶段为止。分支预测器通过尝试猜测跳转指令最有可能跳转还是不跳转来试图避免这样的时间浪费。被猜测为最有可能的分支随后被提取并推测地执行。如果分支预测器检测出猜测的分支是错误的,则推测地执行或部分执行的指令通常被丢弃,并且流水线使用正确的分支重新开始,引发延迟。
发明内容
根据一个总体方面,一种设备可包括分支预测单元、提取单元和预取器电路或单元。分支预测单元可被配置为输出预测的指令。提取单元可被配置为从高速缓冲存储器提取下一指令。预取器电路可被配置为基于预测的指令与下一指令之间的关系将先前预测的指令预取到高速缓冲存储器中。
根据另一总体方面,一种方法可包括:由预测电路预测将由处理器执行的预测的指令。所述方法可包括:由提取电路从高速缓冲存储器提取下一指令。所述方法还可包括:确定预测的指令与下一指令之间的关系是否满足一个或多个预定标准的集合。所述方法可包括:如果所述一个或多个预定标准的集合,则将预测的指令预取到高速缓冲存储器中。
根据另一总体方面,一种设备可包括处理器、高速缓冲存储器、分支预测单元、提取单元和预取器电路或单元。处理器可被配置为执行指令。高速缓冲存储器可被配置为暂时存储指令。分支预测单元可被配置为输出预测的指令,其中,预测的指令被推测性地预测为将由处理器执行,其中,分支预测单元与提取单元分离。提取单元可被配置为从高速缓冲存储器提取下一指令。预取器电路可被配置为:响应于预测的指令与下一指令之间的关系满足一个或多个预定标准,将先前预测的指令预取到高速缓冲存储器中。
在下面的附图和描述中陈述了一个或多个实施例的细节。通过描述和附图,以及通过权利要求,其他特征将是清楚的。
结合多个附图中的至少一个附图充分地示出和/或描述了一种用于预取数据并更具体地用于控制指令的预取的系统和/或方法,在说明书中更加完整地阐述了所述系统和/或方法。
附图说明
图1是根据本公开的主题的系统的示例实施例的框图。
图2是根据本公开的主题的设备的示例实施例的框图。
图3是根据本公开的主题的设备的示例实施例的框图。
图4是可包括根据本公开的主题的原理产生的装置的信息处理系统的原理框图。
各种附图中的相同的参考标号表示相同的元件。
具体实施方式
以下,将参照附图对各种示例实施例进行更加全面地描述,在附图中示出了一些示例实施例。然而,本公开的主题可以以多种不同的形式来实现,并且不应该被解释为限于这里阐述的示例实施例。相反,提供这些示例实施例使得本公开将是彻底的和完整的,并且将本公开的主题的范围全面地传达给本领域技术人员。在附图中,为了清晰,可能夸大层和区域的大小以及相对大小。
将理解,当元件或层被称为“在……上”、“连接到”或“结合到”另一个元件或层时,它可直接在所述另一个元件或层上、直接连接到或结合到所述另一个元件或层,或者可存在中间元件或层。相反,当元件被称为“直接在……上”、“直接连接到”或“直接结合到”另一个元件或层时,不存在中间元件和层。相同的标号始终指代相同的元件。如这里使用的,术语“和/或”包括一个或多个关联的所列项的任何组合和全部组合。
将理解,尽管可在这里使用术语“第一”、“第二”、“第三”等描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应该由这些术语限制。这些术语只是用于将一个元件、组件、区域、层或部分与另一个元件、组件、区域、层或部分进行区分。因此,在不脱离本公开的主题的教导的情况下,以下讨论的第一元件、组件、区域、层或部分可被称为第二元件、组件、区域、层或部分。
为了描述简便,在这里可使用空间相对术语(诸如“在…以下”、“在…下面”、“下面的”、“在…之上”、“上面的”等)来描述在附图中示出的一个元件或特征与另一元件或特征的关系。将理解,空间相对术语意图包含除了在附图中描述的方向之外的装置在使用或操作中的不同方向。例如,如果翻转在附图中的装置,则被描述为在其他元件或特征“下面”或“以下”的元件可被定向为在其他元件或特征的“上面”。因此,示例性术语“在…下面”可包含上面和下面的两个方向。装置可被另外定向(旋转90度或朝向其他方向),并相应地解释这里使用的与空间相关的描述符。
这里使用的术语仅是用于描述特定的示例实施例的目的,而意图不在于限制本公开的主题。如这里所使用的,除非上下文明确地另有指示,否则单数形式也意图包括复数形式。还将理解,当在本说明书中使用术语“包括”和/或“包含”时,表明存在描述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组。
在这里参照作为理想化的示例实施例(和中间结构)的示意图的截面图对示例实施例进行描述。因此,由于例如制造技术和/或公差导致的示图形状的变化是可预期的。因此,示例实施例不应被解释为限于这里示出的区域的特定形状,而是包括由于例如制造引起的形状上的偏差。例如,以矩形示出的注入区域通常将在其边缘上具有圆形的或弯曲的特征和/或注入浓度的梯度,而不是从注入区域到非注入的区域的突然变化。类似地,通过注入形成的埋入区可导致在埋入区和发生注入的表面之间的区域中的一些注入。因此,在附图中示出的区域在本质上是示意图,并且它们的形状不意图示出装置的区域的实际形状,并且不意图不限制本公开的主题的范围。
除非另有定义,否则这里使用的所有术语(包括技术术语和科学术语)具有和本公开的主题所属领域的普通技术人员普遍理解的含义相同的含义。还将理解,除非在这里明确地定义,否则术语(诸如在通用字典中定义的术语)应该被解释为具有与它们在相关领域的语境中的含义一致的含义,而不将被解释为理想化或过于正式的意义。
以下,将参照附图对示例实施例进行详细说明。
图1是根据本公开的主题的系统100的示例实施例的框图。在各种实施例中,系统100可包括计算机、一些分立集成电路或片上系统(SoC)。如下所述,系统100可包括为了不使本公开的主题模糊而未在附图中示出的一些其他组件。
在示出的实施例中,系统100包括系统存储器或主存储器104。在各种实施例中,系统存储器104可以由动态随机存取存储器(DRAM)构成。但是,应该理解,上面仅是不限制本公开的主题的一个说明性示例。在这样的实施例中,系统存储器104可包括模块(例如,双列直插式存储模块(DIMM))上的存储器,系统存储器104可以是焊接的或另外与系统100固定地集成的集成芯片,或者系统存储器104甚至可被合并为包括系统100(例如,SoC)的集成芯片的部分。应该理解,上面仅仅是不限制本公开的主题的一些说明性示例。
在示出的实施例中,系统存储器104可被配置为存储多条数据或信息。这些条数据可包括使处理器102执行各种操作的指令。系统存储器104通常可以是包括若干高速缓冲存储器的更大的存储器分级体系的部分。在各种实施例中,这里描述的操作可由那个存储器分级体系(例如,等级2(L2)高速缓冲存储器)的另一层或级来执行。本领域技术人员应理解,虽然参照系统存储器104描述了操作,但是本公开的主题不限于该说明性示例。
在示出的实施例中,系统100还包括处理器102。处理器102可被配置为执行由各种指令命令的多个操作。这些指令可由诸如算术逻辑单元(ALU)、浮点单元(FPU)、加载/存储单元(LSU)和指令提取单元116(IFU)等的各种执行单元(多半未示出)执行。应该理解,单元仅是组合在一起以执行处理器102的部分功能的电路的聚集。单元通常执行处理器102的流水线架构中的一个或多个操作。
在示出的实施例中,处理器102可包括分支预测单元(BPU)或电路112。如上所述,当处理器102正执行多个指令的流时,所述多个指令中的一个(或多个)指令可以是分支指令。分支指令是使指令流到两条或更多条路径中的一条路径之间的分支或分叉的一个指令。分支指令的典型示例是如果-则(if-then)结构,其中,在如果-则结构中,如果满足特定条件(例如,用户点击“OK”按钮),则第一指令集将被执行,如果未满足特定条件(例如,用户点击“Cancel”按钮),则第二指令集将被执行。如上所述,由于新指令必须在分支、跳转或if-then结构的结果被知道(当解析分支指令的流水线阶段在流水线的深处时)之前进入处理器102的流水线,因此这在流水线处理器架构中是个问题。因此,必须阻止新指令进入流水线,直到分支指令被解析为止(因此否定了流水线体系结构的主要优势),或者处理器102必须做出指令流将分支到哪条路径的猜测并推测地将那些指令放在流水线中。BPU 112可被配置为预测指令流将如何分支。在示出的实施例中,BPU 112可被配置为输出预测的指令172,或更准确地,输出存储预测的指令172的存储器地址。
在示出的实施例中,处理器102包括分支预测地址队列(BPAQ)114。BPAQ 114可包括配置为存储已由BPU 112预测的预测的指令172的多个地址的存储器结构。BPAQ 114可以以先进先出(FIFO)的顺序存储这些预测的指令172的地址,以便以与BPU 112预测它们的顺序相同的顺序从BPAQ 114输出指令地址。
在示出的实施例中,处理器102包括配置为从存储器分级体系提取指令并将它们放置在处理器102的流水线中的指令提取单元(IFU)116。在这样的实施例中,IFU 116可被配置为从BPAQ 114获得与至少最新或最老的指令(下一指令174)关联的存储器地址,并向存储器分级体系请求实际指令174。理想地,指令174将被从存储器分级体系快速提供并被放置在处理器102的流水线中。
在示出的实施例中,BPAQ 114被配置为使BPU 112与IFU 116分离。在这样的实施例中,BPU 112以与IFU 116消耗指令不同(例如,比IFU 116消耗指令更快)的速度来预测指令172。在连接的或无缓冲的架构或实施例中,会要求IFU 116与BPU 112预测指令一样快地提取预测的指令。在示出的实施例中,由于BPU 112产生的预测的指令172的任何附加的地址可简单地存储在BPAQ 114中,所以IFU 116可经历延迟(例如,高速缓存未命中和流水线停滞等)并且不影响BPU 112。当IFU 116能够恢复消耗新的指令174的地址时,地址将在BPAQ 114中等待。
返回到IFU 116的提取机制,理想地,可(通过存储器访问178)从等级1(L1)指令高速缓冲存储器118提取指令174。在这样的实施例中,作为存储器分级体系的顶级或更高级,L1指令高速缓冲存储器118可相对地快,并在流水线中引发少量或不引发延迟。然而,L1指令高速缓冲存储器118有时可不包括期望的指令174。这将造成缓存未命中,并且指令将不得不从存储器分级体系(例如,系统存储器104)的较低较慢的级提取或加载。由于指令将不会以一个预循环的速度(或者处理器的体系结构中任意的最大速度)输入到流水线中,所以这样的缓存未命中可在处理器102的流水线中造成延迟。
在示出的实施例中,处理器102包括指令预取单元(IPFU)120。IPFU 120被配置为:在IFU 116执行实际的提取操作之前,将指令预取到L1指令高速缓冲存储器118中。因此,IPFU 120减少了IFU 116经历的任何缓存未命中的发生。IPFU 120可通过在IFU 116请求之前向L1指令高速缓冲存储器118请求预测的指令172来完成此操作。在这样的实施例中,如果缓存未命中随后发生,则L1指令高速缓冲存储器118将开始向系统存储器104请求缺失的指令的处理。在这样的实施例中,指令可在IFU 116请求它的时候被接收到并存储在L1指令高速缓冲存储器118中。
在各种实施例中,因为IPFU 120的目的之一是为了确认L1指令高速缓冲存储器118预加载有任何期望的指令,并且不实际使用指令本身,所以IPFU 120可丢弃任何返回的指令172或可不包括实际接收指令172的结构。例如,IPFU 120与L1指令高速缓冲存储器118之间的信号177可包括请求存储器地址和接收关于那些请求的任何状态更新(例如,是否存在缓存未命中,是否实现了请求)所需的控制信号,但可不包括数据线或将携带由存储器访问请求的实际数据(例如,构成指令172本身的值)的信号。应该理解,上面仅是不限制本公开的主题的一个说明性示例。
在示出的实施例中,如果(由BPU 112发出的)预测的指令172与(由IFU 116提取的)下一指令174之间存在确定的关系,则IPFU 120可被配置为只预取预测的指令172。在各种实施例中,两个指令172与指令174之的关系可以是对BPU 112的预测的推测性的程度的测量。例如,如果BPU 112不确定它的预测的正确性,则IPFU 120可不希望预取预测的指令172。
在各种实施例中,预取未正确预测的指令172可具有不想要的效果。例如,如果未正确预测的指令172被提取并放置在流水线中,则它将稍后不得不被冲掉并且任何计算的结果将不得不被撤销,造成处理器102的昂贵的调遣。此外,加载到L1指令高速缓冲存储器118但从未被提取或使用的任何指令可造成高速缓冲存储器污染。当未使用或不想要的数据充满高速缓冲存储器的有限空间时,高速缓冲存储器污染通常会移出可能期望或可用的数据。应该理解,上面仅是不限制本公开的主题的一些说明性示例。
在一些实施例中,BPU 112可向IPFU 120指示预测的指令172的推测性的程度。然而,在示出的示例中,推测性的程度可从BPAQ 114内发现的易于得到的信息(用信号176示出)来推断。在这样的实施例中,预测的指令172与下一指令174之间的关系可以是针对它们在BPAQ 114中的各自地址或BPAQ 114的当前深度的它们彼此之间的距离。在这样的实施例中,IFU 116越是往后,预测的指令172就变得越具推测性。在各种实施例中,如果距离超出了预定阈值(在图2中讨论),则IPFU 120可限制(throttle)或抑制任何预取动作。然而,如果深度低于阈值,则IPFU 120可预取预测的指令172。应该理解,上面仅是不限制本公开的主题的一个说明性示例。
在一个实施例中,如果IPFU 120已经限制预取并随后不限制或恢复预取,则IPFU120可被配置为在限制开始时已经预测的任何指令处开始恢复预取,以便预取所有的指令(只要它们在BPAQ 114中)。在另一实施例中,IPFU 120可简单地在限制时间段期间不预取由BPU 112发送的任何预测的指令172,而在由BPU 112输出预测的指令172的新地址时开始或恢复预取。在这样的实施例中,即使错过的指令没被预取,IFU 116有责任提取错过的指令。应该理解,上面仅是不限制本公开的主题的一些说明性示例。
图2是与本公开的主题一致的设备200的示例实施例的框图。在各种实施例中,如上所述,设备200可以是处理器的一部分。在一些实施例中,设备200可以是被配置为预测、预取并最终提取用于处理器执行的指令的更大或统一的指令提取单元或预取单元的部分。在另一实施例中,这里描述的元件可以是分立的。应该理解,上面仅是不限制本公开的主题的一些说明性示例。
在示出的实施例中,设备200包括分支预测单元(BPU)212。在示出的实施例中,设备200包括指令提取单元(IFU)216。设备200还包括指令预取单元(IPFU)220和分支预测地址队列(BPAQ)214。
在示出的实施例中,突出显示并明显示出了BPAQ 214的内部。虽然具体地示出了六个队列条目或字段,但是应该理解,上面仅是不限制本公开的主题的一个说明性示例。当BPU 212输出预测的指令时,或更具体地讲,输出预测的指令的存储器地址时,它们可以以FIFO的方式在BPAQ 214内排队。在示出的实施例中,存在排队在BPAQ 214内的四个指令地址:预测的指令254b的地址、预测的指令254a的地址、预测的指令254的地址和下一指令252的地址。由于下一指令252是将被IFU 216处理的下一个指令(假设没有诸如流水线冲洗(pipeline flush)的异常事件发生),所以最老的预测的指令指的是下一指令252。
在示出的实施例中,BPAQ 214保持有效指令计数(VIC)256。在这样的实施例中,VIC 256可以简单地是由BPAQ 214当前存储的预测的指令的地址的数量的计数(例如,示出的示例中是四)。在一些实施例中,它可以是最新进入队列的指令地址(预测的指令254b)的索引。在另一实施例中,VIC 256可以是下一指令252的地址的索引与最新预测的指令254b的地址的索引之间的差。应该理解,上面仅是不限制本公开的主题的一些说明性示例。
在这样的实施例中,VIC 256被提供到IPFU 220。IPFU 220接收VIC 256作为与最新预测的指令254b关联的推测的程度或置信程度的标识符。在示出的实施例中,IPFU 220可将VIC 256与(由IPFU 220存储的)阈值266进行比较。如果VIC 256低于阈值266,则IPFU220可预取最新预测的指令254b。如果,VIC 256大于或等于阈值266,则IPFU 220可对预取最新预测的指令254b进行限制或另外抑制。在这样的实施例中,如果与最新预测的指令254b关联的推测的程度过高或者置信程度过低,则IPFU 220可被配置为停止任何预取。应该理解,上面仅是不限制本公开的主题的一个说明性示例,并且,在其他实施例中,限制可基于VIC 256是否小于阈值或任何其他比较机制(诸如,滑动比较)。应该理解,上面仅是不限制本公开的主题的一些说明性示例。
在各种实施例中,可动态调节阈值266。然而,在示出的实施例中,阈值266可以是静态的预定值。在一个实施例中,虽然阈值266可包括2的值,但是应该理解,上面仅是不限制本公开的主题的一个说明性示例。
图3是与本公开的主题一致的设备300的示例实施例的框图。在各种实施例中,如上所述,设备300可以是处理器的一部分。在一些实施例中,设备300可以是被配置为预测、预取并最终提取用于处理器执行的指令的更大或统一的指令提取单元或预取单元的部分。在另一实施例中,这里描述的元件可以是分立的。应该理解,上面仅是不限制本公开的主题的一些说明性示例。
在示出的实施例中,设备300包括分支预测单元(BPU)312。在示出的实施例中,设备300包括指令提取单元(IFU)216、指令预取单元(IPFU)320和分支预测地址队列(BPAQ)314。
虽然BPAQ 314示出了六个队列条目或字段,但是应该理解,上面仅是不限制本公开的主题的一个说明性示例。当BPU 312输出预测的指令时,或更具体地讲,输出预测的指令的存储器地址时,它们可以以FIFO的方式在BPAQ 314内排队。在示出的实施例中,存在当前排队在BPAQ 314内的四个指令地址:预测的指令254b的地址、预测的指令254a的地址、预测的指令254的地址和下一指令252的地址。
在示出的实施例中,BPU 312输出分别与预测的指令254b的地址、预测的指令254a的地址、预测的指令254的地址和下一指令252的地址关联的置信程度354b、置信程度354a、置信程度354和置信程度352。置信程度354b、置信程度354a、置信程度354和置信程度352可指示预测的指令将被处理器实际执行的BPU 320的置信程度或推测的程度。
在一些实施例中,置信程度354b、置信程度354a、置信程度354和置信程度352可以是二进制,并指示所有预测中是否存在任何推测。例如,如果在指令流中没有遇到未解析的分支指令,则流中所有的指令将必定被跳转(除非发生不可预见的错误,诸如,除以零的错误)。因此,预测的指令254b、预测的指令254a、预测的指令254和下一指令252中的任意一个可被绝对可信地预测,并且可假设它们将总是需要被预取。相反,如下所述,如果已经遇到未解析的分支指令,则预测的指令254b、预测的指令254a、预测的指令254和下一指令252可能本质上都是推测性的,并且IPFU 320可相应地采取动作。
在另一个实施例中,置信程度354b、置信程度354a、置信程度354和置信程度352指示指令流中仍然未解析的分支指令的数量。例如,如果没有遇到未解析的分支指令,则发出的预测的指令254可与0的置信程度354(其中,更低的值指示更高的置信)关联。一旦遇到第一个未解析的分支指令,置信程度354就可增加至1。在第一个未解析的分支指令与第二个未解析的分支指令之间预测的预测的指令254也可与1的置信程度关联,这是因为所述预测的指令254与开始指令流的这个分叉或分支的第一个分支指令相关,所以BPU 312将不再管那些预测的指令的对错。然而,当遇到第二个未解析的分支指令时,置信程度354可增至2,并且所有之后的指令都可用2的值进行标记(除非遇到第三个未解析的分支指令)。指示那些指令的2的值是双倍推测性的并基于两个层次的猜测。
在另一实施例中,置信程度(例如,置信程度354)指示BPU 312的状态机或计数器的内部状态。在各种实施例中,BPU 312可基于离开内部状态机(未示出)的它的预测。在一些实施例中,采用具有诸如例如强未跳转、弱未跳转、弱跳转和强跳转的状态的四状态状态机。在这样的实施例中,关于状态(例如,“强”或“弱”方面)的信息可包括在置信程度(例如,置信程度354)中。应该理解,上面仅是不限制本公开的主题的一些说明性示例。
在示出的实施例中,各个置信程度354b、置信程度354a、置信程度354和置信程度352可被存储在BPAQ 314内的各自的预测的指令254b、预测的指令254a、预测的指令254和下一指令252的旁边。在示出的实施例中,下一指令252与置信程度352关联;预测的指令254与置信程度354关联;预测的指令254a与置信程度352a关联;预测的指令254b与置信程度354b关联。然而,在其它实施例中,BPAQ 314可不存储置信程度354b、置信程度354a、置信程度354和置信程度352,使得IPFU 320仅使用与最新预测的指令关联的置信程度(例如,与预测的指令254b关联的置信程度354b)。
在这样的实施例中,IPFU 320接收置信程度352与预测的指令地址(例如,与预测的指令254的地址关联的置信程度354)。在示出的实施例中,当确定预取预测的指令254b或限制任何预取时,IPFU 320可被配置为考虑置信程度354b。在示出的实施例中,IPFU 320可包括或存储置信程度阈值366。在这样的实施例中,如果置信程度354b(在预测的指令254b的情况下)大于置信程度阈值366,则停止或限制预取。然而,可预取具有低于置信程度阈值366的置信程度354b的预测的指令254b。
在一些实施例中,IPFU 320可以以下一指令252的置信程度352与最新预测的指令245b的置信程度354b的差作为预取决定的基础。在这样的实施例中,阈值366可与相对的置信程度而非绝对的值进行比较。也就是说,下一指令252与预测的指令254b之间的置信程度关系或差别是预取决定的决定因素。应该理解,上面仅是不限制本公开的主题的一个说明性示例。
在另一实施例中,IPFU 320也可采用如上所述的VIC 256。例如,如果BPU 312生成高置信的大量的预测的指令254,但IFU 216仅提取少量的下一指令252,则BPAQ 314的深度变得相对地大。结果,完全基于置信程度354做出预取决定的IPFU 320的实施例可预取如此多的预测的指令254,以致高速缓冲存储器变满或受污染。当IFU 216最终开始考虑提取下一指令252时,高速缓冲存储器可能已经将它移出,以支持稍后预测的指令(例如,预测的指令254b),因此使预取的期望的益处无效。
在这样的实施例中,可采用多标准IPFU 320。IPFU 320可被配置为考虑置信程度354,以及VIC 256。如果置信程度352的值或VIC 256的值超出它各自的阈值366或266,则IPFU 320可限制预取操作。在这样的实施例中,IPFU 320可被配置为预取推测性不大的预测的指令254,并且还不会使高速缓冲存储器充满还未被IFU 216请求的指令254。应该理解,上面仅是不限制本公开的主题的一些说明性示例。
应该理解,上面仅是不限制本公开的主题的一些说明性示例。在其他的实施例中,各种其他方案可被实施例的IFPU采用,以确定是否应该预取预测的指令。本公开的主题不限于关于图2或图3所讨论的实施例。
图4是可包括根据本公开的主题的原理产生的半导体装置的信息处理系统400的原理框图。
参照图4,信息处理系统400可包括根据本公开的主题的原理构造的一个或多个装置。在另一实施例中,信息处理系统400可采用或执行根据本公开的主题的原理的一种或多种技术。
在各种实施例中,信息处理系统400可包括计算装置(诸如,例如膝上型计算机、台式计算机、工作站、服务器、刀片服务器、个人数字助理、智能电话、平板电脑和其他合适的计算机等)或虚拟机或其虚拟计算装置。在各种实施例中,信息处理系统400可由用户(未示出)使用。
根据本公开的主题的信息处理系统400还可包括中央处理器(CPU)、逻辑或处理器410。在一些实施例中,处理器410可包括一个或多个功能单元块(FUB)或组合逻辑块(CLB)415。在这样的实施例中,组合逻辑块可包括各种布尔逻辑操作(例如,与非、或非、非、异或等)、稳定逻辑装置(例如,触发器和锁存器等)、其他逻辑装置或其组合。这些逻辑组合操作可以以简单或复杂的方式进行配置,以处理输入信号来得到期望的结果。应该理解,虽然描述了同步的组合逻辑操作的一些说明性示例,但是本公开的主题不被这样的限制,并可包括异步的操作或其混合。在一个实施例中,组合逻辑操作可包括多个互补金属氧化物半导体(CMOS)晶体管。在各种实施例中,虽然这些CMOS晶体管可布置在执行逻辑操作的门中,但是,应该理解,其他技术可被使用并且落入本公开的主题的范围内。
根据本公开的主题的信息处理系统400还可包括易失性存储器420(例如,随机存取存储器(RAM)等)。根据本公开的主题的信息处理系统400还可包括非易失性存储器430(例如,硬盘驱动器、光学存储器、NAND或闪存等)。在一些实施例中,易失性存储器420、非易失性存储器430或其组合或部分可被称为“存储介质”。在各种实施例中,易失性存储器420和/或非易失性存储器430可被配置为以半永久或基本永久的形式存储数据。
在各种实施例中,信息处理系统400可包括:被配置为允许信息处理系统400成为通信网络的部分并通过通信网络通信的一个或多个网络接口440。Wi-Fi协议的示例可包括(但不限于)电气和电子工程师协会(IEEE)802.11g和IEEE 802.11n等。蜂窝协议的示例可包括(但不限于)IEEE 802.16m(又名,高级无线MAN(城域网)),高级长期演进(LTE)),增强数据率的GSM(全球移动通信系统)演进(EDGE),演进的高速分组接入(HSPA+)等。有线协议的示例可包括(但不限于)IEEE 802.3(又名,以太网)、光纤通道、电力线通信(例如,HomePlug和IEEE 1901等)等。应该理解,上面仅是不限制本公开的主题的一些说明性示例。
根据本公开的主题的信息处理系统400还可包括用户接口单元450(例如,显示适配器、触觉接口和人机接口装置等)。在各种实施例中,这个用户接口单元450可被配置为从用户接收输入和/或将输出提供给用户。其他种类的装置同样可被使用,以提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈(例如,视觉反馈、听觉反馈或触觉反馈);来自用户的输入可以以包括声、语音或触觉输入的任何形式被接收。
在各种实施例中,信息处理系统400可包括一个或多个其他装置或硬件组件460(例如,显示器或监视器、键盘、鼠标、相机、指纹识别器和视频处理器等)。应该理解,上面仅是不限制本公开的主题的一些说明性示例。
根据本公开的主题的信息处理系统400还可包括一个或多个系统总线405。在这样的实施例中,系统总线405可被配置为通信地连接处理器410、易失性存储器420、非易失性存储器430、网络接口440、用户接口单元450以及一个或多个硬件组件460。由处理器410处理的数据或从非易失性存储器430的外部输入的数据可存储在非易失性存储器430或易失性存储器420中。
在各种实施例中,信息处理系统400可包括或执行一个或多个软件组件470。在一些实施例中,软件组件470可包括操作系统(OS)和/或应用。在一些实施例中,OS可被配置为:将一个或多个服务提供给应用,并管理信息处理系统400的应用和各种硬件组件(例如,处理器410和网络接口440等)或充当信息处理系统400的应用与各种硬件组件之间的媒介。在这样的实施例中,信息处理系统400可包括一个或多个本地应用,所述一个或多个本地应用可安装在本地(例如,非易失性存储器430内等),并被配置为直接由处理器410直接执行并直接与OS进行交互。在这样的实施例中,本地应用可包括预编译的机器可读代码。在一些实施例中,本地应用可包括:被配置为将源代码或目标代码转换成随后由处理器410执行的可执行代码的脚本解释器(例如,C shell(csh)、AppleScript和AutoHotkey等)或虚拟执行机(VM)(例如,Java虚拟机和微软公共语音运行库等)。
上面描述的半导体装置可使用各种封装技术来封装。例如,根据本公开的主题的原理构造的半导体装置可使用以下项中的任何一个来封装:堆叠装配(POP)技术、球栅阵列(BGA)技术、芯片级封装(CSP)技术、带引线的塑料芯片载体(PLCC)技术、塑料双列直插式封装(PDIP)技术、华夫裸片封装、晶片形式的裸片、板上芯片(COB)技术、陶瓷双列直插式封装(CERDIP)技术、塑料公制四方扁平扁平封装(PMQFP)技术、塑料四方扁平扁平封装(PQFP)技术、小外形集成电路(SOIC)技术、收缩型小外形封装(SSOP)技术、薄型小外形封装(TSOP)技术、薄四方扁平封装(TQFP)技术、系统级封装(SIP)技术、多芯片封装(MCP)技术、晶圆级制造封装(WFP)技术、以及晶片级处理堆叠封装(WSP)技术或本领域技术人员将已知的其他技术。
方法步骤可由执行计算机程序以通过对输入数据进行操作并生成输出来执行功能的一个或多个可编程处理器来执行。方法步骤还可由专用逻辑电路(例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路))执行,并且设备可被实现为专用逻辑电路。
在各种实施例中,计算机可读介质可包括当被执行时使装置执行方法步骤的至少一部分的指令。在一些实施例中,计算机可读介质可包括在磁介质、光学介质、其他介质或其组合(例如,CD-ROM、硬盘驱动器、只读存储器或闪存驱动器等)中。在这样的实施例中,计算机可读介质可以是有形且非暂时性地实现的制造品。
虽然已经参照示例实施例对公开的主题的原理进行了描述,但是本领域技术人员将清楚,在不脱离这些公开的构思的精神和范围的情况下,可对示例实施例进行各种改变和修改。因此,应理解,上述实施例不是限制性的,而仅是说明性的。因此,公开的构思的范围将由权利要求及其等同物的最宽泛的可允许的解释来确定,而不应该被前述的描述所局限或限制。因此,将理解,权利要求旨在覆盖落入实施例的范围之内的所有修改和改变。
Claims (18)
1.一种用于预取数据的设备,包括:
分支预测单元,配置为将当前预测的指令输出到分支预测队列和预取器电路二者;
分支预测队列,配置为存储一个或多个预测的指令,并使分支预测单元与提取单元分离,其中,当前预测的指令被放置在分支预测队列的尾部,下一指令位于分支预测队列的头部;
提取单元,配置为从高速缓冲存储器提取从分支预测队列提供的下一指令;
预取器电路,配置为至少部分地基于当前预测的指令与下一指令之间的关系将当前预测的指令预取到高速缓冲存储器中,其中,所述关系通过分支预测队列被提供到预取器电路。
2.如权利要求1所述的设备,其中,预取器电路被配置为:如果当前预测的指令与下一指令之间的关系不满足预定标准,则限制预取。
3.如权利要求1所述的设备,其中,分支预测队列将有效指令计数输出到预取器电路,其中,有效指令计数指示所述关系和当前预测的指令与下一指令之间的分支预测队列中的指令的数量。
4.如权利要求1所述的设备,其中,预取器电路被配置为:如果当前预测的指令与下一指令之间的预测的指令的数量不超过阈值,则预取当前预测的指令。
5.如权利要求1所述的设备,其中,当前预测的指令与下一指令之间的关系指示分支预测单元采用的推测的程度。
6.如权利要求1所述的设备,其中,分支预测单元向预取器电路提供当前预测的指令的存储器地址。
7.如权利要求1所述的设备,其中,分支预测单元使用当前预测的指令指示分支预测单元具有的当前预测的指令将被所述设备执行的置信程度;
其中,预取器电路被配置为:如果置信程度处于或高于阈值,则预取当前预测的指令,如果置信程度低于阈值,则抑制预取当前预测的指令。
8.一种用于预取数据的方法,包括:
由预测电路预测将由处理器执行的当前预测的指令;
将当前预测的指令在队列中入队,其中,队列使预测电路与提取电路分离,当前预测的指令被放置在队列的尾部,下一指令位于队列的头部;
由提取电路从高速缓冲存储器提取从队列提供的下一指令;
确定当前预测的指令与下一指令之间的关系是否满足一个或多个预定标准的集合;
如果满足所述一个或多个预定标准的集合,则将当前预测的指令预取到高速缓冲存储器中。
9.如权利要求8所述的方法,还包括:如果当前预测的指令与下一指令之间的关系不满足所述一个或多个预定标准的集合,则对将当前预测的指令预取到高速缓冲存储器中进行限制。
10.如权利要求8所述的方法,其中,确定关系的步骤包括:
由预取器电路从队列接收有效指令计数,其中,有效指令计数指示当前预测的指令与下一指令之间的入队的指令的数量。
11.如权利要求8所述的方法,其中,确定关系的步骤包括:确定当前预测的指令与下一指令之间的预测的指令的数量是否超过阈值。
12.如权利要求8所述的方法,其中,确定关系的步骤包括:确定对当前预测的指令进行预测时所涉及的推测的程度。
13.如权利要求8所述的方法,其中,预取当前预测的指令的步骤包括:从预测电路接收当前预测的指令的存储器地址。
14.一种用于预取数据的设备,包括:
处理器,配置为执行指令;
高速缓冲存储器,配置为暂时存储指令;
分支预测单元,配置为将当前预测的指令输出到分支预测队列和预取器电路二者,其中,预测的指令被推测性地预测为将由处理器执行,分支预测单元与提取单元分离;
分支预测队列,配置为存储一个或多个预测的指令,其中,当前预测的指令被放置在分支预测队列的尾部,下一指令位于分支预测队列的头部;
提取单元,被配置为从高速缓冲存储器提取由分支预测队列提供的下一指令;
预取器电路,配置为至少部分地响应于当前预测的指令与下一指令之间的关系满足由分支预测队列限定的一个或多个预定标准,将当前预测的指令预取到高速缓冲存储器中。
15.如权利要求14所述的设备,其中,分支预测队列配置为使分支预测单元与提取单元分离。
16.如权利要求14所述的设备,其中,分支预测队列将有效指令计数输出到预取器电路;
其中,预取器电路被配置为:如果有效指令计数未超过阈值,则预取当前预测的指令,如果有效指令计数超过阈值,则对预取当前预测的指令进行抑制,
其中,有效指令计数指示所述关系和当前预测的指令与下一指令之间的分支预测队列中的指令的数量。
17.如权利要求14所述的设备,其中,当前预测的指令与下一指令之间的关系指示分支预测单元采用的推测的程度。
18.如权利要求14所述的设备,其中,分支预测单元向预取器电路提供当前预测的指令的存储器地址。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662276067P | 2016-01-07 | 2016-01-07 | |
US62/276,067 | 2016-01-07 | ||
US15/132,230 US10296463B2 (en) | 2016-01-07 | 2016-04-18 | Instruction prefetcher dynamically controlled by readily available prefetcher accuracy |
US15/132,230 | 2016-04-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106951217A CN106951217A (zh) | 2017-07-14 |
CN106951217B true CN106951217B (zh) | 2022-05-03 |
Family
ID=59275777
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610973966.2A Active CN106951217B (zh) | 2016-01-07 | 2016-11-04 | 由易于得到的预取器准确性动态控制的指令预取器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10296463B2 (zh) |
KR (1) | KR102615010B1 (zh) |
CN (1) | CN106951217B (zh) |
TW (1) | TWI723072B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10606599B2 (en) * | 2016-12-09 | 2020-03-31 | Advanced Micro Devices, Inc. | Operation cache |
CN107943518B (zh) * | 2017-11-24 | 2021-07-16 | 中国航空工业集团公司西安航空计算技术研究所 | 一种局部跳转指令取指电路 |
US11106466B2 (en) | 2018-06-18 | 2021-08-31 | International Business Machines Corporation | Decoupling of conditional branches |
CN110825442B (zh) * | 2019-04-30 | 2021-08-06 | 成都海光微电子技术有限公司 | 一种指令预取方法及处理器 |
CN111984325A (zh) * | 2019-05-23 | 2020-11-24 | 三星电子株式会社 | 提高分支预测吞吐量的装置及系统 |
US11461101B2 (en) * | 2019-09-27 | 2022-10-04 | Arm Technology (China) Co. LTD | Circuitry and method for selectively controlling prefetching of program instructions |
US11567776B2 (en) * | 2020-11-03 | 2023-01-31 | Centaur Technology, Inc. | Branch density detection for prefetcher |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1287311A (zh) * | 1999-01-29 | 2001-03-14 | 国际商业机器公司 | 一种用组预测来降低在组相关高速缓存器中的执行时间的方法及设备 |
CN1300006A (zh) * | 1999-12-10 | 2001-06-20 | 国际商业机器公司 | 利用从分支预测得出的未来分支路径信息进行预取 |
US6560693B1 (en) * | 1999-12-10 | 2003-05-06 | International Business Machines Corporation | Branch history guided instruction/data prefetching |
US7627742B2 (en) * | 2007-04-10 | 2009-12-01 | International Business Machines Corporation | Method and apparatus for conserving power by throttling instruction fetching when a processor encounters low confidence branches in an information handling system |
CN101819523A (zh) * | 2009-03-04 | 2010-09-01 | 威盛电子股份有限公司 | 微处理器以及相关指令执行的方法 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IE940855A1 (en) * | 1993-12-20 | 1995-06-28 | Motorola Inc | Data processor with speculative instruction fetching and¹method of operation |
US5774685A (en) * | 1995-04-21 | 1998-06-30 | International Business Machines Corporation | Method and apparatus for biasing cache LRU for prefetched instructions/data based upon evaluation of speculative conditions |
US5721864A (en) * | 1995-09-18 | 1998-02-24 | International Business Machines Corporation | Prefetching instructions between caches |
US6012134A (en) * | 1998-04-09 | 2000-01-04 | Institute For The Development Of Emerging Architectures, L.L.C. | High-performance processor with streaming buffer that facilitates prefetching of instructions |
US6233645B1 (en) * | 1998-11-02 | 2001-05-15 | Compaq Computer Corporation | Dynamically disabling speculative prefetch when high priority demand fetch opportunity use is high |
JP3573980B2 (ja) * | 1998-11-13 | 2004-10-06 | 富士通株式会社 | 情報処理装置及び情報処理システム |
US6732260B1 (en) * | 2000-03-06 | 2004-05-04 | Intel Corporation | Presbyopic branch target prefetch method and apparatus |
US6766441B2 (en) * | 2001-01-19 | 2004-07-20 | International Business Machines Corporation | Prefetching instructions in mis-predicted path for low confidence branches |
US7085916B1 (en) * | 2001-10-26 | 2006-08-01 | Lsi Logic Corporation | Efficient instruction prefetch mechanism employing selective validity of cached instructions for digital signal processor and method of operation thereof |
US7076640B2 (en) | 2002-02-05 | 2006-07-11 | Sun Microsystems, Inc. | Processor that eliminates mis-steering instruction fetch resulting from incorrect resolution of mis-speculated branch instructions |
JP3683248B2 (ja) * | 2002-10-22 | 2005-08-17 | 富士通株式会社 | 情報処理装置及び情報処理方法 |
JP3811140B2 (ja) * | 2003-05-12 | 2006-08-16 | 株式会社日立製作所 | 情報処理装置 |
US7587580B2 (en) * | 2005-02-03 | 2009-09-08 | Qualcomm Corporated | Power efficient instruction prefetch mechanism |
US7461237B2 (en) * | 2005-04-20 | 2008-12-02 | Sun Microsystems, Inc. | Method and apparatus for suppressing duplicative prefetches for branch target cache lines |
US8516226B1 (en) | 2006-01-23 | 2013-08-20 | Hewlett-Packard Development Company, L.P. | Executing a prefetching policy responsive to entry into an execution phase of an application |
US7917731B2 (en) * | 2006-08-02 | 2011-03-29 | Qualcomm Incorporated | Method and apparatus for prefetching non-sequential instruction addresses |
US7962724B1 (en) * | 2007-09-28 | 2011-06-14 | Oracle America, Inc. | Branch loop performance enhancement |
US9021240B2 (en) * | 2008-02-22 | 2015-04-28 | International Business Machines Corporation | System and method for Controlling restarting of instruction fetching using speculative address computations |
US8443176B2 (en) * | 2008-02-25 | 2013-05-14 | International Business Machines Corporation | Method, system, and computer program product for reducing cache memory pollution |
US8176297B2 (en) * | 2008-12-31 | 2012-05-08 | Texas Instruments Incorporated | Adaptive fetch advance control for a low power processor |
JP2011209905A (ja) * | 2010-03-29 | 2011-10-20 | Sony Corp | 命令フェッチ装置、プロセッサ、および、プログラムカウンタ加算制御方法 |
US9836304B2 (en) * | 2010-11-15 | 2017-12-05 | Advanced Micro Devices, Inc. | Cumulative confidence fetch throttling |
CN104220980B (zh) * | 2011-12-29 | 2018-01-19 | 英特尔公司 | 经管理的指令缓存预取 |
US9182991B2 (en) * | 2012-02-06 | 2015-11-10 | International Business Machines Corporation | Multi-threaded processor instruction balancing through instruction uncertainty |
US9058278B2 (en) | 2012-12-19 | 2015-06-16 | Advanced Micro Devices, Inc. | Tracking prefetcher accuracy and coverage |
US9405544B2 (en) | 2013-05-14 | 2016-08-02 | Apple Inc. | Next fetch predictor return address stack |
GB2515076B (en) * | 2013-06-13 | 2020-07-15 | Advanced Risc Mach Ltd | A data processing apparatus and method for handling retrieval of instructions from an instruction cache |
US9244827B2 (en) | 2013-09-25 | 2016-01-26 | Intel Corporation | Store address prediction for memory disambiguation in a processing device |
US9823925B2 (en) | 2014-03-28 | 2017-11-21 | Intel Corporation | Instruction and logic for a logical move in an out-of-order processor |
US9569212B2 (en) | 2014-03-28 | 2017-02-14 | Intel Corporation | Instruction and logic for a memory ordering buffer |
US20150277925A1 (en) | 2014-04-01 | 2015-10-01 | The Regents Of The University Of Michigan | Data processing apparatus and method for executing a stream of instructions out of order with respect to original program order |
JP6457836B2 (ja) * | 2015-02-26 | 2019-01-23 | ルネサスエレクトロニクス株式会社 | プロセッサおよび命令コード生成装置 |
-
2016
- 2016-04-18 US US15/132,230 patent/US10296463B2/en active Active
- 2016-09-22 KR KR1020160121580A patent/KR102615010B1/ko active IP Right Grant
- 2016-11-04 CN CN201610973966.2A patent/CN106951217B/zh active Active
- 2016-11-14 TW TW105137037A patent/TWI723072B/zh active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1287311A (zh) * | 1999-01-29 | 2001-03-14 | 国际商业机器公司 | 一种用组预测来降低在组相关高速缓存器中的执行时间的方法及设备 |
CN1300006A (zh) * | 1999-12-10 | 2001-06-20 | 国际商业机器公司 | 利用从分支预测得出的未来分支路径信息进行预取 |
US6560693B1 (en) * | 1999-12-10 | 2003-05-06 | International Business Machines Corporation | Branch history guided instruction/data prefetching |
US7627742B2 (en) * | 2007-04-10 | 2009-12-01 | International Business Machines Corporation | Method and apparatus for conserving power by throttling instruction fetching when a processor encounters low confidence branches in an information handling system |
CN101819523A (zh) * | 2009-03-04 | 2010-09-01 | 威盛电子股份有限公司 | 微处理器以及相关指令执行的方法 |
Non-Patent Citations (2)
Title |
---|
Fetching Primary and Redundant Instructions in Turn for a Fault-Tolerant Embedded Microprocessor;Shijian Zhang 等;《IEEE》;20081231;第1-8页 * |
一种静态LoC关键性预测器设计;李清波 等;《计算机工程》;20120405;第263-256页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106951217A (zh) | 2017-07-14 |
TW201725508A (zh) | 2017-07-16 |
KR20170082965A (ko) | 2017-07-17 |
US10296463B2 (en) | 2019-05-21 |
KR102615010B1 (ko) | 2023-12-19 |
TWI723072B (zh) | 2021-04-01 |
US20170199739A1 (en) | 2017-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106951217B (zh) | 由易于得到的预取器准确性动态控制的指令预取器 | |
US9891923B2 (en) | Loop predictor-directed loop buffer | |
US20210406027A1 (en) | Advanced processor architecture | |
EP2330500B1 (en) | System and method for using a branch mis-prediction buffer | |
US20150268961A1 (en) | Decoupling l2 btb from l2 cache to accelerate search for miss after miss | |
US20150067305A1 (en) | Specialized memory disambiguation mechanisms for different memory read access types | |
US10387320B2 (en) | Integrated confirmation queues | |
US9274970B2 (en) | Method and apparatus for handling processor read-after-write hazards with cache misses | |
TWI810450B (zh) | 經由跳過無分歧的快取線改善分歧預測通量的設備及系統 | |
EP1460532A2 (en) | Computer processor data fetch unit and related method | |
TW202105177A (zh) | 控制階層分支預測器使用的裝置以及系統 | |
US11972264B2 (en) | Micro-operation supply rate variation | |
CN106557304B (zh) | 用于预测子程序返回指令的目标的取指单元 | |
KR20190092245A (ko) | 엣지 특성이 검증된 마이크로 분기 타깃 버퍼를 이용하여 컴퓨터 프로세서의 전력 소모를 감소시키는 시스템 및 방법 | |
US7913068B2 (en) | System and method for providing asynchronous dynamic millicode entry prediction | |
CN114168202A (zh) | 指令调度方法、指令调度装置、处理器及存储介质 | |
US20040225866A1 (en) | Branch prediction in a data processing system | |
CN111984325A (zh) | 提高分支预测吞吐量的装置及系统 | |
US20190138450A1 (en) | Method to avoid cache access conflict between load and fill | |
CN112130905A (zh) | 计算装置和计算系统 | |
US7343481B2 (en) | Branch prediction in a data processing system utilizing a cache of previous static predictions | |
CN117032805A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |