CN104572479A - 预取策略控制 - Google Patents

预取策略控制 Download PDF

Info

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
Application number
CN201410515306.0A
Other languages
English (en)
Other versions
CN104572479B (zh
Inventor
干纳施·苏亚那拉亚安·达斯卡
鲁纳·霍姆
大卫·汉娜赫·曼塞尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
Advanced Risc Machines Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN104572479A publication Critical patent/CN104572479A/zh
Application granted granted Critical
Publication of CN104572479B publication Critical patent/CN104572479B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent 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.一种处理数据的方法,所述方法包括如下步骤:
并行执行程序执行的多个线程,所述多个线程中的每一个线程与一个程序指令流相对应;
根据选定的预取策略从存储器的存储地址预取数据值,所述选定的预取策略是多个可选择的预取策略中的一个;
检测所述程序指令流的一个或多个特征,所述一个或多个特征表示程序内的给定数据存取指令被执行多次的概率;以及
依据所述一个或多个特征来从所述多个可选择的预取策略中选择所述选定的预取策略。
CN201410515306.0A 2013-10-24 2014-09-29 预取策略控制 Active CN104572479B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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