CN104572479A - 预取策略控制 - Google Patents
预取策略控制 Download PDFInfo
- Publication number
- CN104572479A CN104572479A CN201410515306.0A CN201410515306A CN104572479A CN 104572479 A CN104572479 A CN 104572479A CN 201410515306 A CN201410515306 A CN 201410515306A CN 104572479 A CN104572479 A CN 104572479A
- Authority
- CN
- China
- Prior art keywords
- instruction
- prefetch
- thread
- prefetch policy
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims description 24
- 230000008569 process Effects 0.000 claims description 14
- 238000013486 operation strategy Methods 0.000 claims description 13
- 238000001514 detection method Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 244000045947 parasite Species 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 239000012141 concentrate Substances 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012544 monitoring process 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
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
- G06F9/3455—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
-
- 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/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand 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, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明涉及预取策略控制。单指令多线程(SIMT)处理器(2)包括执行电路(6)、预取电路(12)和预取策略选择电路(14)。预取策略选择电路用来检测正被执行的程序指令流的一个或多个特征,以识别程序内的给定数据存取指令是否将被多次执行。要运用的预取策略依据检测到的特征从多个可选择的预取策略中选择。
Description
技术领域
本发明涉及数据处理系统领域。尤其是,本发明涉及在合并数据预取机制的数据处理系统中预取策略控制的领域。
背景技术
已知提供了合并有用于存取数据值的预取机制的数据处理系统。这种预取机制力图识别出现的数据存取的模式,并随后从存储器预取数据值,从而使得如果这些数据值随后被存取的话,这时与存取这些数据值相关的延时被减小。
发明内容
从一方面看,本发明提供了用于处理数据的装置,该装置包括:
指令执行电路,被配置为并行执行程序执行的多个线程,所述多个线程中的每一个线程与一个程序指令流相对应。
预取电路,被配置为根据选定的预取策略从存储器的存储地址预取数据值,所述选定的预取策略是多个可选择的预取策略中的一个;以及
预取策略选择电路,被耦合到所述指令执行电路和所述预取电路,并被配置为:
(i)检测所述程序指令流的一个或多个特征,所述一个或多个特征表示程序内的给定数据存取指令被执行多次的概率;以及
(ii)依据所述一个或多个特征来从所述多个可选择的预取策略中选择所述选定的预取策略。
本技术认可由预取电路选用的单个预取策略可以适用于某些类型的执行,但不适用于其他类型的执行。更具体地,本技术认可依据多线程处理器到的程序线程中的给定指令是否会执行多次,不同类型的预取策略可以被选择和使用。预取策略选择电路检测正被执行的程序指令流的表示给定数据存取指令被执行多次的一个或多个特征,,并随后运用此信息来转换所用的预取策略。
本技术在多个线程同步执行公共的程序指令序列的单指令多线程(SIMT)处理器的环境中特别有用。在这种环境下,若适当的预取策略被选择,即使没有给定数据存取指令的重复存取,也可执行预取。因此,对给定数据存取指令是否重复执行的检测可以被用作一种有用的选择标准,以便使用适当的预取策略。
SIMT处理器通常包括在多个线程之间共享的指令解码器,此共享为了减少硬件和处理的负担。SIMT处理器的另一个特征是执行的多个线程在这多个线程之间没有任何数据依赖性,这样这多个线程可以并行执行。
虽然应当认识到上述技术对SIMT处理器有特别的实用性,但是本技术也可以有利地用在其他类型的处理器中,比如细粒度多线程处理器,在细粒度多线程处理器中,(一般独立程序块的)多个线程通过一套公共的硬件在精密粒度程度上交错执行(例如,在同一时间针对单个指令或少数的指令)。
被检测以用来确定给定的存取指令是否可以重复执行的特征可以采取多种不同的形式,并且对于这些存取指令被重复执行具有确定性,或者替代地以概率的方式表示这种情况,例如,表示这样的执行可能会发生但并不确定。
可以被用来在预取策略之间进行选择并且与相对低开销的执行相关的一种形式的特征检测是否任何向后分支指令被执行。包括向后分支指令的指令流可能包括重复的数据存取指令,并且相应地可被用于在选择预取策略的应用中。该特征的另一种形式是对程序循环执行的检测(包含在某些实施例中对相反分支指令的检测)。
可表示给定存取指令的多次执行的另一示例特征为:给定线程的执行包括大于阈值数量的程序指令在该线程终止之前被执行。线程需要较长的时间来执行通常包括重复执行给定存取指令的循环,并相应地将其运用到选择预取策略的应用中。
在其他实施例中可利用查找电路,查找电路被配置为检测给定数据存取指令在程序线程之一中的重复执行。这种查找电路可将遇到的存取指令与程序计数器值相比较,来查看这些存取指令是否被重复执行。执行这种查找的一种有效的硬件方法是使用布隆过滤器电路。
进行选择的多个可选择的预取策略可包括各种不同的策略和各种数量不同的策略。一种能实现有价值的优势的相对低开销的执行为:当多个可选择的预取策略包括短期运行策略和长期运行策略时,短期运行策略适用于当程序指令流不包含执行多次的给定数据存取指令时预测数据值,长期运行策略适用于当程序指令流包含执行多次的给定数据存取指令时预测数据值。
作为短期运行策略和长期运行策略的示例,短期运行策略可以完全地集中于正被执行的存储器存取的存储器地址内的步幅模式,独立于那些存储器存取源发的线程,因为存即使各个线程不包含重复执行的数据存取指令,在储器存取内也存在可以通过预取电路利用的模式。可以存在一种可以利用的存储器存取模式,该存储器存取模式由于并行执行的不同线程之间的关系而产生。可以利用由于给定线程内的运行状况而出现的数据存取模式的长期运行策略的一个示例为:利用线程标识符以及可能的程序计数器值来识别对于给定线程出现的步幅模式。
在某些实施例中,预取策略选择电路被配置为选择短期运行策略作为默认策略,并随后当检测到表示存在给定数据存取指令的重复执行的一个或多个特征时转换到长期运行策略。这允许即使没有可以使用长期运行策略而被利用的模式出现,也能利用短期运行策略的可能性。
从另一方面来看,本发明提供了一种处理数据的装置,该装置包括:
用于并行执行程序执行的多个线程的指令执行装置,所述多个线程中的每一个线程与一个程序指令流相对应;
用于根据选定的预取策略从存储器的存储地址预取数据值的预取装置,所述选定的预取策略是多个可选择的预取策略中的一个;以及
被耦合到所述指令执行装置和所述预取电路的预取策略选择装置,该预取策略选择装置用于:
(i)检测所述程序指令流的一个或多个特征,所述一个或多个特征表示程序内的给定数据存取指令被执行多次的概率;以及
(ii)依据所述一个或多个特征来从所述多个可选择的预取策略中选择所述选定预取策略。
从另一方面来看,本发明提供了一种处理数据的方法,所述方法包括如下步骤:
并行执行程序执行的多个线程,所述多个线程中的每一个线程与一个程序指令流相对应;
根据选定的预取策略从存储器的存储地址预取数据值,所述选定的预取策略是多个可选择的预取策略中的一个;
检测所述程序指令流的一个或多个特征,所述一个或多个特征表示程序内的给定数据存取指令被执行多次的概率;以及
依据所述一个或多个特征来从所述多个可选择的预取策略中选择所述选定的预取策略。
本发明的上述和其他目的、特征和优点可以通过下面对示例性实施例的详细描述并结合附图清楚的表示出来。
附图说明
图1示意性地示出了用于执行SIMT处理的数据处理装置;
图2示意性地示出了多线程如何针对独立数据同步执行相同的代码;
图3示意性地示出了可应用本技术细粒度多线程;
图4示意性地示出了可以被用来表示其中很有可能存在被多次执行的给定数据存取指令的线程的向后分支指令;以及
图5是流程图,示意性地示出了依据对长期运行线程运行状况的一个或多个特征的检测对预取策略的选择。
具体实施方式
图1示意性地示出了SIMT数据处理装置2,SIMT数据处理装置2包括在多个执行单元6之间共享的指令解码器电路4,多个执行单元6一起构成了指令执行电路。执行单元6同步执行相同的程序指令流(如果可能),以执行单指令多线程处理,得到可能的高数据处理吞吐量。这种类型的SIMT处理类似于本技术领域的那些SIMT处理,并且在本文不会做进一步的描述。
执行单元6执行可包括数据存取指令的程序指令,比如加载指令和存储指令。这些数据存取指令在高速缓存存储器8和主存储器10内存取数据。通常会有与数据存取指令相关的相对较长的延时,例如,如果发生高速缓存缺失(miss)。相应地,数据处理装置2包括预取电路12,预取电路12的功能是预测高速缓存8和存储器10内的哪些数据值将经受数据存取操作,以及在需要任何数据值之前,对这些数据值执行从主存储器10到高速缓存8的获取。预取电路12应用可包含识别数据存取模式的预取策略,比如识别与连续数据存取之间的存储器地址差异对应的步幅值。在某些情况下这些模式还可以与线程标识符和指令标识符(例如,指令地址)相关联。
数据处理装置2包括预取策略选择电路14,预取策略选择电路14耦合到预取电路12以及至少一个执行单元6。预取策略选择电路14用于监控执行单元6的运行状况以检测正被执行的程序指令的一个或多个特征。这些特征表示至少程序内的数据存取指令将被执行单元6执行多次的概率。这一个或多个特征可以是这样的,即它们明确地确定给定数据存取指令已经被执行多次,或者替代地可以仅仅表示关于给定的数据存取指令已经被执行多次的超过阈值的概率。明确地确定给定数据存取指令被执行多次或识别关于给定数据存取指令被执行多次的充分高的概率的实施例都涵盖在本技术中。
预取策略选择电路14依据表示关于至少程序线程内的数据存取指令被执行多次的充分高的概率的一个或多个特征的检测以应用此来从多个可选择的预取策略中选择匹配这种情况的所选策略。当一个或多个特征被检测到后,长期运行策略被选择,长期运行策略适于在当程序指令流包含被执行多次(例如与线程ID和/或程序指令地址相关)的给定数据存取指令时,预测要预取的数据值。默认假设是:线程最先执行采用的是短期运行策略,短期运行策略适于在当程序指令流没有被识别为包含被执行多次的给定数据存取指令时预测要预取的数据值。对于给定线程跨越不同执行单元6执行的多个实例,短期运行预测策略以及在应用该策略时做出的预取预测被选择。长期运行策略可以另外将独个线程的标识符以及该线程内的特定数据存取指令的标识符纳入到预测中,因此独个线程可以具有独自的预测。应当认识到的是可以采用各种不同的预取策略,并通过预取策略选择电路14在其间进行选择。
图2示意性地示出了多个执行单元6内执行公共的程序指令序列16的SIMT处理。每个执行单元6和与其同步(同步性)地运行的其他执行单元6同时(或基本同时)执行相同的指令。应当认识到的是独个线程可能在某些情况下失去同步(同步性),比如发生异常或采用了未被其他线程采用的的分支。由不同线程处理的各自的数据可以是不同的。例如,给定的总处理工作负荷可以在不同的线程之间划分,每个线程执行总工作负荷的各自一小部分,比如处理形成总体图像所需像素的子集。
图1和图2对应于根据SIMT方法的处理。本技术还可发现在应用细粒度多线程的实施例中具有实用性。这种实施例的一个示例具有单个处理器,此处理器以细粒度为基础(例如,每次针对少数指令)将其处理时间在彼此交织的不同线程的执行间进行划分。与每个线程相关的状态可以被分别保持,并且可以转入和转出使用,正如线程之间的转换发生。例如,可以提供多个寄存器组,其中每个寄存器组与每个线程相关联。在这样的细粒度多线程环境内的预取电路可应用多个预取策略中可选择的一个预取策略,该可选择的一个预取策略是通过预取策略选择电路依据所执行的处理的一个或多个特征所选定的。选定的预取策略依据检测到的表示给定程序指令已经被多次执行的特征。
可被检测以表示给定数据存取指令被多次执行的一个或多个特征可以有很大不同。图4示意性地示出了检测的一个示例特征,包括正被执行的程序指令内的向后分支指令I5。检测到向后分支指令I5表示程序流包含循环,并且相应地在该程序线程内的给定数据存取指令有很高概率会被执行多次。这可以用来选择匹配当前的情况的预取策略。可以检测的特征的另一个示例是在线程内执行的指令的数量超过了一定的阈值数量。包括更多的指令的线程通常包括循环并且相应地与包括被执行多次的数据存取指令的线程相关。因此,线程内执行的指令的数量提供了关于该线程包括执行多次的数据存取指令的概率性指示。循环的执行也可以被直接检测,比如通过检测某些指令集内的特定循环指令。
检测对应于给定数据存取指令的多次执行的一个或多个特征的另一种方法是包括查找电路,查找电路被配置为检测给定数据存取指令的执行,例如,可以追踪识别出的数据存取指令的程序地址,以及由此识别这些数据存取指令的重复执行。提供这种查找电路的一种有效硬件方法是用布隆(Bloom)过滤器形式的电路。
在系统初始化(启动)时,短期运行策略作为默认被选择,短期运行策略假设给定数据存取指令不被重复执行。当检测到表示给定数据存取指令重复执行的一个或多个特征时,发生到长期运行策略的转换。
图5是示意性的示出了如上操作的流程图。在步骤18,处理等待直到新线程将要开始。在步骤20,短期运行预取策略被设置作为对于新线程的初始的默认策略。随后步骤22开始执行新线程。步骤24重复地试图检测长期运行线程的一个或多个特征。如果这样的特征被检测到,那么处理进行到步骤26,其中长期运行策略被选择以用于该新线程。
在其他实施例中,要采用的预取策略在任务(程序流)水平上比起在独个线程水平上被更好的控制。在某些实施例中,任务可有1000个线程,所有这些线程具有相同的初始程序计数器值。最好在较粗的任务水平上执行对预取策略的选择,以避免关于针对各线程运行错误策略的惩罚。相应地,在某些实施例中,控制预取策略选择的特征在任务水平上而非在线程水平被追踪。
虽然本发明的示例性实施例参考附图在本文中被详细表述,但是应当理解的是本发明不限定于这些明确的实施例,并且在不脱离由所附权利要求来限定的本发明的范围和精神的情况下,本领域技术人员可以在其中做各种有效的改变和修改。
Claims (14)
1.一种处理数据的装置,该装置包括:
指令执行电路,指令执行电路被配置为并行执行程序执行的多个线程,所述多个线程中的每一个线程与一个程序指令流相对应;
预取电路,预取电路被配置为根据选定的预取策略从存储器的存储地址预取数据值,所述选定的预取策略是多个可选择的预取策略中的一个;以及
预取策略选择电路,预取策略选择电路被耦合到所述指令执行电路和所述预取电路,并被配置为:
(i)检测所述程序指令流的一个或多个特征,所述一个或多个特征表示程序内的给定数据存取指令将被执行多次的概率;以及
(ii)依据所述的一个或多个特征来从所述多个可选择的预取策略中选择所述选定的预取策略。
2.如权利要求1所述的装置,其中,所述多个线程中的每一个同步执行公共的程序指令序列。
3.如权利要求2所述的装置,其中,所述指令执行电路包括在所述多个线程之间共享的指令解码器电路。
4.如权利要求2所述的装置,其中,所述多个线程中的每一个线程执行而不会在所述多个线程之间有数据依赖。
5.如权利要求1所述的装置,其中,所述指令执行电路被配置为执行细粒度多线程处理。
6.如权利要求1所述的装置,其中,所述程序指令流有其中连续程序指令被依次执行的常规的向前执行顺序,并且所述一个或多个特征包括转到目标指令的向后分支指令的执行,所述目标指令就所述常规向前执行顺序而言位于所述向后分支指令之前。
7.如权利要求1所述的装置,其中,所述一个或多个特征包括程序循环的执行。
8.如权利要求1所述的装置,其中,所述程序指令流对应于给定线程,所述给定线程为多个程序指令线程中的一个,并且所述一个或多个特征包括所述给定线程包括在所述给定线程终止之前执行的大于阈值数量的程序指令。
9.如权利要求1所述的装置,其中,所述预取策略选择电路包括查找电路,查找电路被配置为检测所述给定数据存取指令在所述多个线程中一个线程内的重复执行。
10.在权利要求9所述的装置,其中,所述查找电路是布隆过滤器电路。
11.如权利要求1所述的装置,其中,所述多个可选择预取策略包括:
(i)短期运行策略,所述短期运行策略适用于当所述程序指令流不包含执行多次的给定数据存取指令时预测要被预取的数据值;以及
(ii)长期运行策略,所述长期运行策略适用于当所述程序指令流包含执行多次的给定数据存取指令时预测要被预取的数据值。
12.如权利要求11所述的装置,其中,所述预取策略选择电路被配置为选择所述短期运行策略作为默认策略,并当检测到所述一个或多个特征时转换为所述长期运行策略。
13.一种处理数据的装置,该装置包括:
用于并行执行程序执行的多个线程的指令执行装置,所述多个线程中的每一个线程与一个程序指令流相对应;
用于根据选定的预取策略从存储器的存储地址预取数据值的预取装置,所述选定的预取策略是多个可选择的预取策略中的一个;以及
被耦合到所述指令执行装置和所述预取电路的预取策略选择装置,该预取策略选择装置用于:
(i)检测所述程序指令流的一个或多个特征,一个或多个特征表示程序内的给定数据存取指令将被执行多次的概率;以及
(ii)依据所述的一个或多个特征来从所述多个可选择的预取策略中选择所述选定的预取策略。
14.一种处理数据的方法,所述方法包括如下步骤:
并行执行程序执行的多个线程,所述多个线程中的每一个线程与一个程序指令流相对应;
根据选定的预取策略从存储器的存储地址预取数据值,所述选定的预取策略是多个可选择的预取策略中的一个;
检测所述程序指令流的一个或多个特征,所述一个或多个特征表示程序内的给定数据存取指令被执行多次的概率;以及
依据所述一个或多个特征来从所述多个可选择的预取策略中选择所述选定的预取策略。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/061,837 | 2013-10-24 | ||
US14/061,837 US11494188B2 (en) | 2013-10-24 | 2013-10-24 | Prefetch strategy control for parallel execution of threads based on one or more characteristics of a stream of program instructions indicative that a data access instruction within a program is scheduled to be executed a plurality of times |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104572479A true CN104572479A (zh) | 2015-04-29 |
CN104572479B CN104572479B (zh) | 2019-12-13 |
Family
ID=51727036
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410515306.0A Active CN104572479B (zh) | 2013-10-24 | 2014-09-29 | 预取策略控制 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11494188B2 (zh) |
KR (1) | KR102305238B1 (zh) |
CN (1) | CN104572479B (zh) |
GB (1) | GB2519644B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106164875A (zh) * | 2014-04-04 | 2016-11-23 | 高通股份有限公司 | 基于专用高速缓存组中的竞争性专用预取策略进行自适应性高速缓存预取以减少高速缓存污染 |
CN108958802A (zh) * | 2017-05-17 | 2018-12-07 | 华为技术有限公司 | 一种线程预操作方法、装置和存储介质 |
CN110083389A (zh) * | 2019-05-08 | 2019-08-02 | 苏州浪潮智能科技有限公司 | 一种分支跳转指令的预取方法、装置及设备 |
CN114450668A (zh) * | 2019-09-27 | 2022-05-06 | 安谋科技(中国)有限公司 | 电路和方法 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10318307B2 (en) | 2015-06-17 | 2019-06-11 | Mediatek, Inc. | Scalarization of vector processing |
CN107710153B (zh) * | 2015-07-09 | 2022-03-01 | 森蒂彼得塞米有限公司 | 具有有效的存储器访问的处理器 |
US9575897B2 (en) * | 2015-07-09 | 2017-02-21 | Centipede Semi Ltd. | Processor with efficient processing of recurring load instructions from nearby memory addresses |
US10185561B2 (en) | 2015-07-09 | 2019-01-22 | Centipede Semi Ltd. | Processor with efficient memory access |
WO2017045212A1 (zh) * | 2015-09-20 | 2017-03-23 | 张鹏 | 一种分支预取的方法 |
US10678545B2 (en) * | 2016-07-07 | 2020-06-09 | Texas Instruments Incorporated | Data processing apparatus having streaming engine with read and read/advance operand coding |
KR102022482B1 (ko) * | 2017-12-12 | 2019-09-18 | 연세대학교 산학협력단 | 듀얼 모듈러 리던던시를 이용한 파이프라인 구조의 오류 복구 모듈 및 방법 |
GB2572954B (en) * | 2018-04-16 | 2020-12-30 | Advanced Risc Mach Ltd | An apparatus and method for prefetching data items |
US11520588B2 (en) | 2019-06-10 | 2022-12-06 | International Business Machines Corporation | Prefetch filter table for storing moderately-confident entries evicted from a history table |
KR102644719B1 (ko) * | 2023-04-07 | 2024-03-08 | 메티스엑스 주식회사 | 다중 스레드의 비동기적인 실행이 가능한 매니코어 시스템 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090240931A1 (en) * | 2008-03-24 | 2009-09-24 | Coon Brett W | Indirect Function Call Instructions in a Synchronous Parallel Thread Processor |
CN102023931A (zh) * | 2010-12-17 | 2011-04-20 | 曙光信息产业(北京)有限公司 | 一种自适应缓存预取方法 |
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 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6260116B1 (en) * | 1998-07-01 | 2001-07-10 | International Business Machines Corporation | System and method for prefetching data |
US6571318B1 (en) | 2001-03-02 | 2003-05-27 | Advanced Micro Devices, Inc. | Stride based prefetcher with confidence counter and dynamic prefetch-ahead mechanism |
US7103757B1 (en) * | 2002-10-22 | 2006-09-05 | Lsi Logic Corporation | System, circuit, and method for adjusting the prefetch instruction rate of a prefetch unit |
US7155575B2 (en) * | 2002-12-18 | 2006-12-26 | Intel Corporation | Adaptive prefetch for irregular access patterns |
US7421540B2 (en) * | 2005-05-03 | 2008-09-02 | International Business Machines Corporation | Method, apparatus, and program to efficiently calculate cache prefetching patterns for loops |
US7475231B2 (en) * | 2005-11-14 | 2009-01-06 | Texas Instruments Incorporated | Loop detection and capture in the instruction queue |
US7831800B2 (en) | 2007-05-17 | 2010-11-09 | Globalfoundries Inc. | Technique for prefetching data based on a stride pattern |
US8788766B2 (en) * | 2010-02-18 | 2014-07-22 | Oracle America, Inc. | Software-accessible hardware support for determining set membership |
US8560816B2 (en) * | 2010-06-30 | 2013-10-15 | Oracle International Corporation | System and method for performing incremental register checkpointing in transactional memory |
US10346173B2 (en) * | 2011-03-07 | 2019-07-09 | Oracle International Corporation | Multi-threaded instruction buffer design |
US20130339689A1 (en) * | 2011-12-29 | 2013-12-19 | Srikanth T. Srinivasan | Later stage read port reduction |
US20130262779A1 (en) | 2012-03-30 | 2013-10-03 | Jayaram Bobba | Profile-based hardware prefetching |
-
2013
- 2013-10-24 US US14/061,837 patent/US11494188B2/en active Active
-
2014
- 2014-08-26 GB GB1415068.4A patent/GB2519644B/en active Active
- 2014-09-29 CN CN201410515306.0A patent/CN104572479B/zh active Active
- 2014-10-07 KR KR1020140134793A patent/KR102305238B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US20090240931A1 (en) * | 2008-03-24 | 2009-09-24 | Coon Brett W | Indirect Function Call Instructions in a Synchronous Parallel Thread Processor |
CN102023931A (zh) * | 2010-12-17 | 2011-04-20 | 曙光信息产业(北京)有限公司 | 一种自适应缓存预取方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106164875A (zh) * | 2014-04-04 | 2016-11-23 | 高通股份有限公司 | 基于专用高速缓存组中的竞争性专用预取策略进行自适应性高速缓存预取以减少高速缓存污染 |
CN108958802A (zh) * | 2017-05-17 | 2018-12-07 | 华为技术有限公司 | 一种线程预操作方法、装置和存储介质 |
CN110083389A (zh) * | 2019-05-08 | 2019-08-02 | 苏州浪潮智能科技有限公司 | 一种分支跳转指令的预取方法、装置及设备 |
CN114450668A (zh) * | 2019-09-27 | 2022-05-06 | 安谋科技(中国)有限公司 | 电路和方法 |
CN114450668B (zh) * | 2019-09-27 | 2023-10-31 | 安谋科技(中国)有限公司 | 电路和方法 |
Also Published As
Publication number | Publication date |
---|---|
GB2519644B (en) | 2021-03-03 |
US20150121038A1 (en) | 2015-04-30 |
CN104572479B (zh) | 2019-12-13 |
GB201415068D0 (en) | 2014-10-08 |
US11494188B2 (en) | 2022-11-08 |
KR20150047422A (ko) | 2015-05-04 |
GB2519644A (en) | 2015-04-29 |
KR102305238B1 (ko) | 2021-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104572479A (zh) | 预取策略控制 | |
JP5914521B2 (ja) | 処理装置、トレースユニット、および診断装置 | |
US20040215720A1 (en) | Split branch history tables and count cache for simultaneous multithreading | |
US5822790A (en) | Voting data prefetch engine | |
KR101835949B1 (ko) | 메모리 접근 타입을 고려한 캐시 치환 정책 | |
JP2014504768A (ja) | 領域に基づくガベージ・コレクタを用いてクラスを漸進的にアンロードするための方法、コンピュータ・プログラム製品、および装置 | |
US9268595B2 (en) | Scheduling thread execution based on thread affinity | |
KR20160086764A (ko) | 이종 치환 정책을 가진 셋트 연관 캐시 메모리 | |
US20040168039A1 (en) | Simultaneous Multi-Threading Processor circuits and computer program products configured to operate at different performance levels based on a number of operating threads and methods of operating | |
KR20160087750A (ko) | 메모리 접근 타입에 기초한 통로에 의해 버짓화된 캐시 메모리 | |
US20170300417A1 (en) | Multi-Way Set Associative Cache and Processing Method Thereof | |
CN107957848B (zh) | 重删处理方法及存储设备 | |
CN104572026B (zh) | 用于进行预取的数据处理方法和装置 | |
US20150154021A1 (en) | Control of switching between execution mechanisms | |
KR0146059B1 (ko) | 미참조 선인출 캐쉬를 이용한 명령어 선인출 방법 및 그 회로 | |
US10853076B2 (en) | Performing at least two branch predictions for non-contiguous instruction blocks at the same time using a prediction mapping | |
CN115525344B (zh) | 一种译码方法、处理器、芯片及电子设备 | |
US11249762B2 (en) | Apparatus and method for handling incorrect branch direction predictions | |
JP2020510255A (ja) | キャッシュ・ミス・スレッド・バランシング | |
KR100594256B1 (ko) | 동시 다중 쓰레딩 프로세서 회로, 동작하는 쓰레드들의수에 기초하여 다른 성능레벨들에서 동작하도록 구성되는컴퓨터 프로그램 제품 및 이들을 동작시키는 방법 | |
US11243772B2 (en) | Efficient load value prediction | |
KR20050084232A (ko) | 데이터 프리패치 방법, 프리패치 시스템 및 프로세싱시스템 | |
EP4168894A1 (en) | Prediction using instruction correlation | |
GB2392266A (en) | Using a flag in a branch target address cache to reduce latency when a branch occurs that references a call-return stack | |
CN111026713B (zh) | 一种搜索系统、数据搜索方法及运行时间确定方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |