CN1484788A - 根据未命中距离将数据预取到高速缓存器中的系统和方法 - Google Patents

根据未命中距离将数据预取到高速缓存器中的系统和方法 Download PDF

Info

Publication number
CN1484788A
CN1484788A CNA018216293A CN01821629A CN1484788A CN 1484788 A CN1484788 A CN 1484788A CN A018216293 A CNA018216293 A CN A018216293A CN 01821629 A CN01821629 A CN 01821629A CN 1484788 A CN1484788 A CN 1484788A
Authority
CN
China
Prior art keywords
miss
instruction
subclauses
clauses
cache
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
CNA018216293A
Other languages
English (en)
Other versions
CN1222870C (zh
Inventor
M・阿布达拉
M·阿布达拉
-达亚尼
K·阿尔-达亚尼
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN1484788A publication Critical patent/CN1484788A/zh
Application granted granted Critical
Publication of CN1222870C publication Critical patent/CN1222870C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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/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 or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch

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

根据未命中距离将数据预取 到高速缓存器中的系统和方法
发明领域
本发明的实施例涉及从存储器中预取数据。具体的,本发明涉及从存储器预取数据以供处理器使用的方法和装置。
背景
由处理器执行的指令经常使用存储在例如随机存取存储器(RAM)等存储器件中的数据。例如,处理器可能执行LOAD(加载)指令将存储在特定存储器地址中的数据加载到寄存器中。在许多系统中,因为系统存储器的存取时间相对较慢,所以频繁使用的数据元素要从系统存储器中拷贝到称作高速缓存器的较快速的存储器件中,并且只要有可能,处理器在需要存取(即,读入或写出)所述数据元素时,就可以使用在高速缓存器中的数据元素的拷贝。如果被指令访问的存储单元还没有拷贝到高速缓存器中,则指令对存储单元的访问会引起“高速缓存器未命中(cache miss)”,因为所需的数据不能从高速缓存器中获得。如果最小化高速缓存器未命中的数量,则计算机系统的操作更加有效。
一种减少等待访问RAM所花费的时间的方法是在需要数据之前,即,在高速缓存器未命中发生之前从RAM存储器中“预取”该数据。许多处理器具有这样的指令周期,在该指令周期中,在一步中从存储器中获得要执行的指令(即,取指令),并在另一步中执行。如果要执行的指令访问存储单元(例如,存储器LOAD),则在所述单元的数据必须从高速缓存器,或者如果高速缓存器未命中,从系统存储器中取出放在处理器的适当部分。高速缓存器预取器(prefetcher)尝试预测随后指令将访问哪些数据地址,并在需要数据之前从存储器中预取要访问的数据。该预取的数据可以存储在高速缓存器或缓冲器中,以供以后的使用。
现有的预取方案确定例如LOAD的存储器指令的“步幅(strid)”,然后用该步幅预取数据。在程序中指令的步幅可以定义为两个连续执行的指令加载的存储器地址之间的距离。如这里所用的,“指令”是指在程序中的指令的特定实例,每个指令由不同的指令指针(“IP”)值标识。基于步幅的预取方案的理论前提是,指令将访问一系列彼此间隔相同距离的存储单元。如果,例如,程序处在循环或嵌套循环中,或者步进通过表时(stepping though a table),该预测经常是准确的。
附图介绍
图1是根据本发明实施例的具有预取器的计算机系统的局部框图。
图2是根据本发明实施例的存储器和高速缓存器中的一系列地址的局部框图。
图3是根据本发明实施例的临界未命中预取表的局部框图。
图4是根据本发明实施例管理数据预取的方法的流程图。
图5是根据本发明另一个实施例的单次未命中表和临界未命中预取表的局部框图。
图6是根据本发明另一个实施例的具有临界未命中预取器的计算机系统的局部框图。
图7是根据本发明另一个实施例的前端表和后端表的局部框图。
图8是根据本发明另一个实施例的具有预取器的计算机系统的局部框图。
详细介绍
本发明的实施例涉及这样的预取器,所述预取器根据由指令引起的高速缓存器未命中之间的距离为指令预取数据。在实施例中,预取器建立记录指令的连续高速缓存器未命中之间的距离的预取表。该距离是高速缓存器未命中的步幅,并且可以称作指令的“未命中距离”。如果指令的未命中距离以某种模式出现,则根据该模式出现的未命中可以称作“临界高速缓存器未命中”。在指令引发“当前高速缓存器未命中”之后,本实施例的预取器可以请求预取位于与造成当前高速缓存器未命中的数据地址距离为未命中距离的数据。然后,该数据成为将来可用的。未命中距离可以存储在临界高速缓存器未命中预取表中。
所介绍的临界高速缓存器未命中的管理策略能够使用比以前的预取器中的更小的表尺寸,同时保持以前预取机构的大部分的性能优点。因为临界高速缓存器未命中预取器不保存通常不会引起未命中的LOAD指令的地址和步幅,所以可以实现这些高效的结果。此外,预取器不需要检查即使在步幅内通常也不会引起高速缓存器未命中的数据的高速缓存器未命中。
本发明的实施例通过滤掉不是未命中模式的部分的未命中获得进一步的性能改进。这种未命中可以称作“冷未命中”或“噪声未命中”。在实施例中,甚至不用记录指令导致未命中的地址,除非检测到该指令的至少两次未命中。在另一个实施例中,不为指令进行预取,直到确定未命中的距离。在又一个实施例中,不为指令重新计算存储在临界未命中预取表中的未命中距离,除非两次连续未命中发生的距离不同于所述的未命中距离。下面是对这些和其它实施例更详细的介绍。
图1是根据本发明实施例的具有预取器120的计算机系统100的局部框图。计算机系统100包括具有耦合到预取器120的译码器110的处理器101。计算机系统100还具有耦合到译码器110和预取器120的执行单元107。术语“耦合”包含直接连接、间接连接、间接通信等。处理器101可以是能够处理指令的任何微处理器,例如,INTELPENTIUM系列处理器中的通用处理器。执行单元107是执行指令的装置。译码器110是将一种类型代码改变为可以执行的另一种类型代码的装置或程序。例如,译码器110译码作为程序一部分的LOAD指令,然后,译码后的LOAD指令由执行单元107执行。处理器101耦合到高速缓存器130和随机存取存储器(RAM)140。RAM 140为系统存储器。在其它实施例中,可以在计算机系统100中使用不同于RAM的系统存储器类型,代替RAM 140或作为RAM 140的补充。高速缓存器130可以是静态随机存取存储器(SRAM)。在其它实施例中,高速缓存器130可以是处理器101的一部分。
预取器120包括预取管理器122和预取存储器125。预取管理器122包括根据由指令引起的高速缓存器未命中之间的距离预取指令数据的逻辑。如在本申请中所使用的,“逻辑”可以包括例如执行操作的布线电路的硬件逻辑,或者例如执行操作的固件的程序逻辑。预取存储器125可以存储含有包括由指令引起的高速缓存器未命中之间的距离的条目的临界未命中预取表。在一个实施例中,预取存储器125是内容可寻址存储器(CAM)。下面参考图3、5和7讨论临界未命中预取表的例子。预取管理器122可以根据在预取表中为指令记录的未命中距离确定要预取的数据元素的地址。
图2是根据本发明实施例的存储器和高速缓存器中的一系列地址的局部框图。图2示出了RAM 140和高速缓存器130的一部分。RAM 140包括每个具有唯一地址的一系列存储器单元或者存储单元。在图2中,在从1000到1100的一系列地址中每第十个地址用地址号标注。图2示出了在RAM 140的地址1010、1020、1040、1050、1070、1080和1100中的数据的拷贝存储在高速缓存器130中。
图2在这里用来说明由处理器101重复执行的指令的高速缓存器未命中模式。例如,指令可以是程序中特定的LOAD指令。该指令可以用通常为IP=XXXX的指令指针值来识别。在例子程序中,该指令由处理器101在较短的时间段中重复执行。这典型地出现在该指令是循环的一部分的情况下,但是在其它情况中也可能出现。在例子中所用的IP=XXXX的LOAD指令,可以在每次执行LOAD指令时加载在不同存储器地址存储的数据。在图2所示的例子中,假设指令从地址1000开始加载,并且指令的步幅201为10。即,在讨论的程序的相关部分期间,该例子中的指令首先从地址1000加载,然后从随后的每第十个存储单元加载(例如,1000、1010、1020、1030、1040、1050、1060、1070、1080、1090、1100、…)。
当本例子的LOAD指令经过执行周期时,处理器101将尝试从高速缓存器130中获得执行LOAD指令所需的数据。在图2所示的例子中,当从地址1010、1020、1040、1050、1070、1080和1100加载时,执行LOAD指令所需的数据在高速缓存器中。这些地址可以称作“被缓存的”。为了简化,在本例中,存储在高速缓存器中的地址的顺序与它们在RAM 140中的顺序相同,但是,当然它们可以以任何顺序存储在高速缓存器130中。图2显示出的地址1000、1030、1060和1090没有被缓存。因此,当LOAD指令从地址1000、1030、1060和1090加载时,将发生高速缓存器未命中。在本例子中,在导致高速缓存器未命中的一系列地址中的第一个地址与导致高速缓存器未命中的下一个地址之间的未命中距离202为30(即,1030-1000=30)。
根据本发明实施例的一个实施例的临界未命中预取器预取当执行在IP=XXXX的LOAD指令时会导致高速缓存器未命中的数据。在实施例中,该数据由预取根据来自存储在预取存储器125中的临界未命中预取表的信息加以预取。
图3是根据本发明实施例的临界未命中预取表300的局部框图。临界未命中预取表具有用条目编号310的1到8表示的八个条目,不过在本实施例中,条目编号只是为了说明的目的并且不是表中的字段。在另一个实施例中,临界未命中预取表300可以具有更多或更少的条目。每个条目可以包括一条指令的信息。如图3所示,临界未命中预取表300具有5个字段,但是在其它实施例中可以具有更多或更少的字段。在临界未命中预取表300中的第一个字段是指令IP字段301。该字段包括所述条目涉及的指令的指令指针。如图3所示,第一条目存储XXXX的指令指针值。在临界未命中预取表300中的下一个字段是上次未命中地址字段302。该字段存储指令上次高速缓存器未命中的地址。在图3中的例子包括上次未命中地址1030,表示当执行IP=XXXX的LOAD指令时上次未命中的地址为1030。在临界未命中预取表300中的下一个字段是未命中距离字段303。在实施例中,该字段存储指令最后的连续两次高速缓存器未命中之间的距离。例如,如果第一次高速缓存器未命中发生在加载地址1000时,并且下一次高速缓存器未命中发生在加载地址1030时,则在未命中距离字段303中存储未命中距离为30。
在临界未命中预取表300中的下一个字段是未命中重复字段304和确认字段305。这些字段可被包括噪声滤波器的本发明实施例使用,以防止由于噪声未命中弄脏临界未命中预取表300和/或未命中数据。在一个实施例中,这些字段中的每个为一位。下面参考图4讨论这些字段的操作、以及临界未命中预取器的一般操作。
图4是根据本发明实施例管理数据预取的方法的流程图。该流程图可以用来说明图1的预取器120如何预取图2中所示的数据集。对于本例,假设:临界未命中预取表300目前没有条目,处理器101第一次执行在IP=XXXX的指令,并且当指令IP=XXXX第一次执行时,它从地址1000以及随后的每第十个地址加载。还假设:高速缓存器处于图2所示的状态。
如图4所示,该方法包括确定在指令XXXX的执行循环期间当从第一地址加载时已经有高速缓存器未命中(图4的401)。根据图2所示的高速缓存器的状态,指令IP=XXXX将导致地址1000的高速缓存器未命中。然后,预取管理器122将确定临界未命中预取表300是否包含IP=XXXX的条目(图4的402)。对于第一次高速缓存器未命中,临界未命中预取表300将不包含IP=XXXX的条目。根据一个实施例,将在临界未命中预取表300中建立IP=XXXX的条目(图4的403)。在一个实施例中,建立新的条目包括在表中存储上次未命中的地址(这里是1000)。在本实施例中,当稍后发生该指令的第二次未命中时,预取管理器122将确定未命中距离等于30(1030-1000),并将该值存储到未命中距离字段303中。注意,在图2中,将不会发生针对地址1010和1020的未命中,因为这些地址被缓存了。
在使用噪声过滤技术的另一个实施例中,不存储上一次未命中地址,直到出现该指令的第二次未命中。在本实施例中,未命中重复字段304用来指示对应所述条目的指令是否已经出现至少两次未命中。在本实施例中,当在临界未命中预取表300中建立新的条目时,清除未命中重复位。当指令XXXX下一次未命中发生在地址=1030时,预取器检查临界未命中预取表300,确定表中已经有指令XXXX的条目,但是该条目的未命中重复位还没有置位,置位未命中重复位,然后只在上一次未命中地址字段302中保存值。在这种情况下,上一次未命中地址将是1030。根据该实施例,对于只发生一次的噪声未命中,将不会记录上一次未命中地址。
为了说明假设:不使用噪声过滤技术,第二次未命中已经发生了,并且由此条目包含作为未命中距离的值30和作为上一次未命中地址的值1030。当指令IP=XXXX下一次未命中发生在地址1060时,预取器将确定临界未命中预取表300是否已经有指令IP=XXXX的条目(图4的402)。然后,临界未命中预取器将确定上次未命中的地址(在本例中,在上次未命中地址字段中的值为1030)与当前未命中地址的未命中距离(图4的404)。因为新的未命中在预计的未命中距离,所以在本实施例中预取管理器122预取与当前未命中相距未命中距离的数据(图4的405)。由此,预取在地址1090的数据以备当后面执行IP=XXXX的指令时使用。
在本发明的实施例中,要预取的数据预取到高速缓存器130中,并作标记表示已经预取了。在实施例中,该标记用在数据元素的高速缓存器条目中的一位实现,该位可以被称作“虚拟位”。在另一个实施例中,虚拟位可以作为多用途位。为了保持在临界未命中预取表中的正确模式的目的,如果从高速缓存器加载的数据标记为已经预取,则这种加载定义为并被预取器理解为高速缓存器未命中。即,当在执行指令期间从高速缓存器130中请求这种标记过的数据时,将从高速缓存器130提供数据,但是预取管理器122将好像发生高速缓存器未命中那样动作。在另一个实施例中,预取的数据加载到缓冲器(未示出)中,而不是加载到高速缓存器中。该缓冲器充当预取数据的高速缓存器。在本实施例中,即使数据在缓冲器中也会发生高速缓存器未命中,但是因为可以从缓冲器中获得数据,而不从RAM加载,所以依然能够高效地执行指令。
发送预取数据请求之后,预取管理器122更新指令IP=XXXX的临界预取表条目300(图4的406)。例如,预取管理器将在上次未命中地址字段中存储当前高速缓存器未命中的地址。
如果存储在未命中距离字段303中的未命中距离不同于当前未命中的未命中距离(图4的404),则在实施例中,不预取数据。在本实施例中,预取管理器可以通过存储新的未命中距离和新的上次未命中地址来更新临界未命中预取表300的指令IP=XXXX条目(图4的407)。下面参考图5的失配字段514讨论包括这样的滤波器的实施例,所述滤波器用于根据噪声未命中防止重新计算未命中距离。
然后,对于每个高速缓存器未命中,可以重复图4所示的方法,包括在不使用本预取算法会是未命中的高速缓存器命中。
在使用噪声过滤技术的另一个实施例中,未命中距离不用来预取数据,直到它已被确认。在本实施例中,临界未命中预取表300的确认字段305可以用来指示在未命中距离上是否发生了指令的两次连续的未命中。在本实施例中,当在临界未命中预取表300中建立新的条目时,清除确认位。假设当指令XXXX发生第二次未命中时,未命中距离被存储在条目中。当指令XXXX发生第三次未命中时,预取器检查临界未命中预取表300,并确定第三次未命中的地址与上次未命中地址相距是否为未命中距离。如果存储在未命中距离字段303中的未命中地址距离被准确地预测为当前未命中的未命中距离,则置位确认位。如果第三次未命中的未命中距离不同于存储在条目中的未命中距离,则这次不置位确认位。根据本实施例,预取管理器122不会为该指令引发数据预取,除非在临界未命中预取表300中对应该指令的确认位被置位。
图5是根据本发明另一个实施例的单次未命中表520和临界未命中预取表510的局部框图。该局部框图说明在其他技术中的两种不同的噪声过滤技术。一种技术,通过使用单次未命中表520存储只有单次未命中的指令的IP,来限制在临界未命中预取表510中建立新条目。该技术(可以称作“二表法(two-table approach)”)允许更小的表尺寸。第二种技术使用失配字段514防止根据噪声未命中重新计算未命中距离。这些技术可以单独或组合使用。
现在介绍二表法。在所说明的实施例中,临界未命中预取表510允许四个条目,单次未命中表520允许多于四个条目。在单次未命中表520中的每个条目具有单个字段,指令IP字段521。因此,在单次未命中表520中的每个条目可以存储指令的指令指针(例如,XXXX、YYYY、ZZZZ等)。临界未命中预取表510类似于图3的临界未命中预取表300。临界未命中预取表510具有指令IP字段511、上次未命中地址字段512、未命中距离字段513、失配字段514和确认字段515。临界未命中预取表500没有临界未命中预取表300中的未命中重复字段304,因为未命中重复字段的功能由单次未命中表520实现。在本实施例中,当未命中出现时,预取器120确定临界未命中预取表510是否具有导致这次未命中的指令的条目。如果临界未命中预取表510没有该指令的条目,则预取器120确定单次未命中表520是否具有该指令的条目。如果单次未命中表520中也没有该指令的条目,则在单次未命中表520中建立该指令的条目。如果单次未命中表520具有有该指令的条目,则在临界未命中预取表510中建立该指令的条目。当使用本实施例的噪声过滤技术时,将不会在临界未命中预取表510中建立该指令的条目,除非该指令产生两次未命中。(更准确而言,将不会在临界未命中预取表510中建立该指令的条目,除非单次未命中表520具有该指令较早前出现的未命中的记录。)因此,如果指令只引起了单次噪声未命中,则不会在临界未命中预取表510中建立条目。
临界未命中预取表510的失配字段514用来根据噪声未命中防止重新计算未命中距离。如果已经确定指令的未命中距离,并且稍后出现的未命中不在未命中距离,这可能表示新的未命中模式的开始,在这种情况下应当重新计算未命中距离。但是,在新距离的未命中可能只是噪声未命中,在这种情况下不应当重新计算未命中距离。例如,如果我们修改图2所示的数据集,使得由于某些与该指令的未命中距离的真正模式不相关的原因导致地址1070没有存储在高速缓存器130中,则即使该指令的未命中距离的真正模式具有未命中距离30,地址1070的加载也会导致未命中距离为10(1070-1060=10)的未命中。根据实施例,每当在不同于存储在未命中距离字段513中的距离的距离发生未命中时,预取器就检查失配字段514中的匹配位。如果在这种情况下匹配位是没有置位的,则预取器置位匹配位,并且不在未命中距离字段513中存储新的距离。如果匹配位是置位的,则预取器在未命中距离字段513中存储新的距离,并清除匹配位。最后,每当未命中发生在未命中距离字段513中存储的距离时就清除未命中位。因此,在新的未命中距离的单次未命中被假设为噪声未命中,但是在不同于未命中距离的距离的两次连续的未命中将导致重新计算失配位。
图6是根据本发明另一个实施例的具有临界未命中预取器620的计算机系统600的局部框图。该局部框图示出了在其它物件中的可以结合临界未命中预取器620一起操作的第二预取器,分隔跨过两个存储器的临界未命中表,以及在临界未命中预取器中包含的逻辑。在其它实施例中,可以分别使用图6的这三个方面的一个或两个。
计算机系统600具有带译码器110和执行单元107的处理器601,类似于图1的计算机系统100。此外,计算机系统600具有高速缓存器130和RAM 140。高速缓存器130是处理器601的一部分,但在其它实施例中高速缓存器130可以在处理器601的外部。处理器601具有耦合到译码器110、执行单元107和RAM 140的第二预取器650。临界未命中预取器620具有条目建立逻辑621、未命中距离更新逻辑622、噪声过滤逻辑623和条目替换逻辑624。处理器601具有耦合到临界未命中预取器620并由其使用的存储器626和存储器628。
第二预取器650包括用来预取数据元素以供指令使用的预取逻辑。在实施例中,第二预取器650结合临界未命中预取器620一起操作,但使用不同的预取机制。例如,第二预取器650可以是线索缓冲器,并且临界未命中预取器和线索缓冲器(hint buffer)都能够同时预取程序的数据。在本实施例中,临界未命中预取器和线索缓冲器可以互相补充(compliment)。
在实施例中,条目建立逻辑621可以是电路,如果指令已经引起多于一次的高速缓存器未命中,则所述电路在临界未命中预取表中建立指令的条目。在另一个实施例中,条目建立逻辑621可以至少部分地根据单次未命中表的内容确定指令产生了不止一次高速缓存器未命中。在实施例中,未命中距离更新逻辑622包括用于将指令的未命中距离记录在预取表条目中的电路。在另一个实施例中,未命中距离更新逻辑622还包括用于记录对于指令的至少两次连续未命中已经确认未命中距离的电路。在实施例中,噪声过滤逻辑623可以是防止由于噪声未命中导致弄脏临界未命中预取表和/或未命中数据。
在实施例中,条目替换逻辑624是这样的电路,该电路通过使用存储在条目的未命中重复字段和确认字段中的信息选择在预取表中要替换的条目。例如,如果建立新的条目,但是表已经满了,则条目需要被替换。在另一个实施例中,临界未命中预取表具有未命中重复字段和确认字段,条目替换逻辑624首先选择替换表中未命中重复位没有置位的任何条目(即,未命中字段表示该条目没有出现两次未命中)。在又一个实施例中,条目替换逻辑624接着选择替换确认位没有置位的任何条目(即,确认字段表示未命中距离还没有确认)。在另一个实施例中,在每种类型中以先进先出(FIFO)的方式选择要替换的条目。
图7是根据本发明另一个实施例的前端表710和后端表720的局部框图。在实施例中,用索引方案通过将临界未命中预取表分为两部分,并使临界未命中表(前端表)的一部分位于处理器流水线的前端来改善临界未命中预取器的效率。在本实施例中,前端表710和后端表720都允许相同数量的条目,并且在前端表710中的每个条目对应于后端表720的条目。如前所述,在表中的每一个条目涉及一条指令。在实施例中,在前端表710中的条目包括在指令IP字段701中的指令指针的值。在本实施例中,后端表720包含上次未命中地址字段702、未命中距离字段703、未命中重复字段704和确认字段705。后端表720构成主预取表,但是不存储用于标识条目所涉及的指令的任何信息。预取器通过搜索前端表710中的指令的IP确定在后端表720中要读出或更新的条目的位置。例如,为了更新在后端表720中的XXXX的条目的上次未命中地址字段702,预取器通过在前端表710的第一条目中找到值XXXX确定在两个表中的第一条目都涉及IP=XXXX的指令。这样,前端表710和后端表720可以当作好像是一个表来加以处理。
在实施例中,图6的存储器626存储前端表710,而存储器628存储后端表720。在另一个实施例中,存储器628比译码器110更接近高速缓存器130,存储器626比高速缓存器130更接近译码器110。因此,可以是32位的IP不需要向下游传遍所有的流水线。
图8是根据本发明另一个实施例的具有预取器的计算机系统800的局部框图。计算机系统800具有带译码器110、执行单元107和预取表存储器125的处理器801,类似于图1的计算机系统100。此外,计算机系统800具有高速缓存器130和RAM 140。处理器801还具有包括预取器硬件822和机械可读介质823的预取器820。机械可读介质823可以存储这样的预取器指令824,所述预取器指令824可以是由预取器硬件822执行的以实现上述的一个或多个临界未命中预取技术的可执行指令。如在这里所用的,术语“可执行指令”的意思是包括:目标代码、源代码、固件、微码等,并包括以压缩和/或加密的格式存储的指令,以及在被处理器执行之前必须被编译或安装器加以安装的指令。
本发明的实施例涉及临界未命中预取器。临界未命中预取器根据指令的高速缓存器未命中之间的距离为指令预取数据。本发明利用未命中距离的可预测性确定要预取的地址。本发明的几个实施例在这里专门说明和/或介绍。但是,应当理解,本发明的修改和变型被上述说明所覆盖,并在附带的权利要求书的范围内,没有脱离本发明的精神和范围。例如,可以使用上述介绍的方面的一个或多个的任意组合。此外,本发明可以用于物理地址或线性地址。此外,当确定要预取的地址时,预取器可以使用多个未命中距离。

Claims (30)

1.一种预取器,根据由指令引起的高速缓存高速缓存器未命中之间的距离为指令预取数据。
2.根据权利要求1的预取器,其中预取器具有存储含有一个或多个包括由指令引起的高速缓存未命中之间的距离的条目的预取表的存储器,所述条目包括由指令引起的高速缓存器未命中之间的距离。
3.根据权利要求2的预取器,其中如果指令已经引起至少两个次高速缓存高速缓存器未命中,则预取表只包含所述指令的条目。
4.根据权利要求2的预取器,其中根据在预取表中记录的指令的高速缓存高速缓存器未命中之间的距离确定预取的数据元素的地址。
5.根据权利要求2的预取器,其中预取器具有噪声过滤,用于防止至少一种类型的噪声未命中的至少一种改变预取数据所用的未命中距离。
6.一种预取器,包括:
存储具有多个条目的预取表的存储器,每个条目包含关于涉及指令的信息,条目具有未命中距离字段,所述未命中距离字段存储引起第一次高速缓存高速缓存器未命中的第一地址和引起第二次高速缓存高速缓存器未命中的第二地址之间的距离,第二次高速缓存高速缓存器未命中为第一次高速缓存高速缓存器未命中之后的指令的下一次高速缓存高速缓存器未命中;以及
连接耦合到存储器以便管理预取表的预取管理器。
7.根据权利要求6的预取器,其中在预取表中的条目具有未命中重复字段,所述未命中重复字段表示是否检测到该指令不止一次未命中。
8.根据权利要求6的预取器,其中在预取表中的条目具有确认字段,所述确认字段表示是否存储在未命中距离字段中的距离是否也是所述第二地址和引起第三次高速缓存高速缓存器未命中的第三地址之间的距离,第三次高速缓存高速缓存器未命中为第二次高速缓存高速缓存器未命中之后指令的下一次高速缓存高速缓存器未命中。
9.根据权利要求6的预取器,其中在预取表中的条目还具有失配字段,所述失配字段表示,前一次未命中是否在与的距离是否匹配存储在未命中距离字段中的距离相匹配的距离。
10.根据权利要求6的预取器,其中:
在预取表中的条目具有未命中重复字段,所述未命中重复字段表示,是否检测到该指令不止一次未命中;
在预取表中的条目具有确认字段,所述确认字段表示,是否存储在未命中距离字段中的距离是否也是所述第二地址和经过第一次高速缓存高速缓存器未命中对象的第三地址之间的距离,第三次高速缓存高速缓存器未命中为第二次高速缓存高速缓存器未命中之后指令的下一次高速缓存高速缓存器未命中;以及
预取管理器具有替代逻辑,所述替代逻辑通过使用存储在条目的未命中重复字段和确认字段中的信息选择在预取表中要替换的条目。
11.根据权利要求6的预取器,其中预取器还包括第二存储器,所述第二存储器存储具有多个条目的前端表,每个条目报号包含指令指针,其中在前端表中的每个条目对应于预取表中的一个条目,并且其中预取表不存储用于标识识别与条目所涉及相关的指令的任何信息。
12.一种处理器,包括:
临界未命中预取器,所述临界未命中预取器根据记录的由指令产生的高速缓存高速缓存器未命中之间的距离,预取数据供指令所使用的数据;以及
执行指令的执行单元。
13.根据权利要求12的处理器,其中临界未命中预取器包括这样的第一电路,如果指令已经产生了不止一个次高速缓存高速缓存器未命中,则所述第一电路在临界未命中预取表中为指令产生建立条目指令的条目的第一电路,其中对于指令已经产生了不止一次高速缓存器未命中的确定,至少一部分地是以根据单个次未命中表的内容为基础的确定指令已经产生了不止一个高速缓存未命中。
14.根据权利要求13的处理器,其中临界未命中预取器包括:
第一电路,如果指令已经产生了不止一个次高速缓存高速缓存器未命中,则所述第一电路在临界未命中预取表中为指令产生建立条目指令的条目的第一电路,其中至少一部分根据单个未命中表的内容确定对于指令已经产生了不止一个次高速缓存高速缓存器未命中的确定,至少部分地是以单次未命中表的内容为基础的;
第二电路,用于在预取表条目中为指令记录未命中距离的第二电路;以及
第三电路,用于记录由于对于指令的至少两个次连续未命中已确认未命中距离。
15.根据权利要求12的处理器,其中处理器还包括:
高速缓存高速缓存器;
第一存储器,用于存储具有条目的预取表的第一存储器,条目所述条目存储关于涉及指令的预取信息,但不存储用于标识识别与条目所涉及相关的指令的信息条目,第一存储器连接耦合到临界未命中预取器,并比译码器更接近高速缓存高速缓存器;以及
第二存储器,用于存储前端表的第二存储器,前端表具有对应于预取表的条目的条目的条目,其中前端表条目存储用于标识识别与条目所涉及相关的指令的信息,并且其中第二存储器连接耦合到临界未命中预取器,并且比高速缓存高速缓存器更接近译码器。
16.根据权利要求12的处理器,其中处理器还包括第二预取器,所述第二预取器用于预取指令所用的数据元素以供指令使用,其中第二预取器采用不同的预取机制,并结合与临界未命中预取器一起工作操作。
17.一种管理数据预取的方法,该方法包括:
确定在执行从第一地址装载加载的指令周期期间存在高速缓存高速缓存器未命中;
确定第一预取表是否含有该指令的条目,该条目存储了未命中距离和该指令上次引起高速缓存高速缓存器未命中的第二地址;以及
如果第一预取表含有该指令的条目,则部分地根据存储在条目中的信息确定是否预取数据。
18.根据权利要求17的方法,其中确定是否预取数据包括:如果第一地址和第二地址之间的距离等于存储的未命中距离,则确定应当发送预取请求。
19.根据权利要求17的方法,其中第一预取表条目包含确认字段,其中确定是否预取数据包括:如果第一地址和第二地址之间的距离等于存储的未命中距离,并且该确认字段表示存储的未命中距离已确认,则确定应当发送预取请求。
20.根据权利要求18的方法,其中方法还包括:如果第一预取表不包含该指令的条目,则在第一预取表中为该指令产生建立该指令的条目,并且其中只有当在预取表中的其它条目也具有表示存储在那些其它条目中的未命中距离得到确认之后的情况下,新的条目代替预取表中这样的条目的条目,该条目的确认字段表示存储在该条目中的未命中距离的确认字段已得到确认。
21.根据权利要求17的方法,其中确定第一预取表是否包含该指令的条目包括,确定是否在第二预取表中的条目是否中保护包含用于标识识别所述指令的信息,其中第二预取表驻留在不同于与第一预取表的属于不同的存储器中。
22.根据权利要求17的方法,其中在第一预取表中的指令的条目包括失配字段,并且其中当处理上次未命中时,失配字段表示,当处理上次未命中时,指令的上次未命中是否发生在存储在条目中的未命中距离。
23.根据权利要求22的方法,其中方法还包括:
确定第一预取表包含指令的条目,并且在第一地址和第二地址之间的距离不等于未命中距离;
如果失配字段表示上次未命中发生在存储的未命中距离,则更新失配字段,以便表示指令的上次未命中未发生在存储的未命中距离;以及
如果失配字段表示上次未命中未发生在存储的未命中距离,则在未命中距离字段存储未命中距离,并更新失配字段,以便表示指令的上次未命中未发生在存储的未命中距离。
24.根据权利要求17的方法,其中方法还包括:
如果第一预取表不包含该指令的条目,并且第二预取表包含该指令的条目,则在第一预取表中为该指令产生建立该指令的条目;以及
如果第一预取表不包含该指令的条目,并且第二预取表不包含该指令的条目,则在第二预取表中为该指令产生建立该指令的条目。
25.一种机械机器可读介质,其上存储多个可执行指令,多个指令用来包括执行如下操作的指令:
确定在执行从第一地址装载加载的指令周期期间存在高速缓存高速缓存器未命中;
确定第一预取表是否含有该指令的条目,该条目存储未命中距离和上次未命中地址,上次未命中地址是指令上次引起高速缓存高速缓存器未命中的地址;以及
根据高速缓存高速缓存器未命中更新第一预取表中的条目。
26.根据权利要求25的机械器可读介质,其中更新第一预取表中的条目的指令用来执行如下操作:
在条目中的上次未命中地址字段中存储第一地址;
更新确认字段以便,表示,如果这是发生在存储的未命中距离的第二次连续未命中,则上次未命中地址已经确认,并且确认字段不表示已经确认了未命中距离;以及
如果失配字段表示上次未命中没有发生在存储的未命中距离,则在未命中距离字段中存储第一地址和第二地址之间的距离。
27.根据权利要求25的机械机器可读介质,其中多个指令还包括执行如下操作的指令:
如果第一预取表不包含该指令的条目,并且第二预取表包含该指令的条目,则在第一预取表中为该指令产生建立该指令的条目;以及
如果第一预取表不包含该指令的条目,并且第二预取表不包含该指令的条目,则在第二预取表中为该指令产生建立该指令的条目。
28.一种处理器的预取系统,预取系统包括:
根据为在预取表中存储的指令存储的的未命中距离预取数据的装置;以及
更新预取表以包含指令的新的未命中距离的装置。
29.根据权利要求28的预取系统,其中更新预取表的装置包括:过滤噪声未命中的装置。
30.根据权利要求28的预取系统,其中根据未命中距离预取数据的装置将带有数据已经预取的标记的预取器数据存储到高速缓存高速缓存器中,指示所述数据已经被预取。
CNB018216293A 2000-12-29 2001-12-18 根据未命中距离将数据预取到高速缓存器中的系统和方法 Expired - Fee Related CN1222870C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/749,936 2000-12-29
US09/749,936 US6584549B2 (en) 2000-12-29 2000-12-29 System and method for prefetching data into a cache based on miss distance

Publications (2)

Publication Number Publication Date
CN1484788A true CN1484788A (zh) 2004-03-24
CN1222870C CN1222870C (zh) 2005-10-12

Family

ID=25015840

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB018216293A Expired - Fee Related CN1222870C (zh) 2000-12-29 2001-12-18 根据未命中距离将数据预取到高速缓存器中的系统和方法

Country Status (8)

Country Link
US (3) US6584549B2 (zh)
EP (1) EP1346281A2 (zh)
CN (1) CN1222870C (zh)
AU (1) AU2002241682A1 (zh)
HK (1) HK1064170A1 (zh)
RU (1) RU2260838C2 (zh)
TW (1) TW541498B (zh)
WO (1) WO2002054230A2 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100346318C (zh) * 2004-04-20 2007-10-31 国际商业机器公司 根据存储器占用动态调整预读值的系统和方法
CN101548266B (zh) * 2006-12-08 2012-12-05 高通股份有限公司 用于低复杂性指令预取系统的方法和设备
CN104750696A (zh) * 2013-12-26 2015-07-01 华为技术有限公司 一种数据预取方法及装置
CN104854557A (zh) * 2012-12-20 2015-08-19 高通股份有限公司 具有多位通路预测掩码的指令高速缓存
CN106021128A (zh) * 2016-05-31 2016-10-12 东南大学—无锡集成电路技术研究所 一种基于步幅和数据相关性的数据预取器及其预取方法
CN106776371A (zh) * 2015-12-14 2017-05-31 上海兆芯集成电路有限公司 跨距参考预取器、处理器和将数据预取到处理器的方法

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10116863A1 (de) * 2001-04-04 2002-10-17 Infineon Technologies Ag Schnittstelle
US8171266B2 (en) * 2001-08-02 2012-05-01 Hewlett-Packard Development Company, L.P. Look-ahead load pre-fetch in a processor
EP1304619A1 (en) * 2001-10-22 2003-04-23 STMicroelectronics Limited Cache memory operation
US20030084433A1 (en) * 2001-10-31 2003-05-01 Chi-Keung Luk Profile-guided stride prefetching
US6832296B2 (en) * 2002-04-09 2004-12-14 Ip-First, Llc Microprocessor with repeat prefetch instruction
EP1361518B1 (en) * 2002-05-10 2013-08-07 Texas Instruments Incorporated Reducing TAG-RAM accesses and accelerating cache operation during cache miss
US7162588B2 (en) * 2002-08-23 2007-01-09 Koninklijke Philips Electronics N.V. Processor prefetch to match memory bus protocol characteristics
US7165146B2 (en) * 2003-01-28 2007-01-16 Sun Microsystems, Inc. Multiprocessing computer system employing capacity prefetching
CN1327353C (zh) * 2003-04-21 2007-07-18 智慧第一公司 可选择性撤回预取的微处理器装置
US7177985B1 (en) * 2003-05-30 2007-02-13 Mips Technologies, Inc. Microprocessor with improved data stream prefetching
US7111126B2 (en) * 2003-09-24 2006-09-19 Arm Limited Apparatus and method for loading data values
US7487296B1 (en) * 2004-02-19 2009-02-03 Sun Microsystems, Inc. Multi-stride prefetcher with a recurring prefetch table
US7313654B2 (en) * 2004-10-27 2007-12-25 Xiv Ltd Method for differential discarding of cached data in distributed storage systems
US7380065B2 (en) * 2005-03-30 2008-05-27 International Business Machines Corporation Performance of a cache by detecting cache lines that have been reused
US7421540B2 (en) * 2005-05-03 2008-09-02 International Business Machines Corporation Method, apparatus, and program to efficiently calculate cache prefetching patterns for loops
US20070239940A1 (en) * 2006-03-31 2007-10-11 Doshi Kshitij A Adaptive prefetching
US7681047B2 (en) * 2006-04-18 2010-03-16 International Business Machines Corporation Decryption of data in storage systems
JP5131986B2 (ja) * 2006-05-16 2013-01-30 パナソニック株式会社 画像処理装置
US7774578B2 (en) * 2006-06-07 2010-08-10 Advanced Micro Devices, Inc. Apparatus and method of prefetching data in response to a cache miss
US7873791B1 (en) * 2007-09-28 2011-01-18 Emc Corporation Methods and systems for incorporating improved tail cutting in a prefetch stream in TBC mode for data storage having a cache memory
US8161264B2 (en) * 2008-02-01 2012-04-17 International Business Machines Corporation Techniques for data prefetching using indirect addressing with offset
US8166277B2 (en) * 2008-02-01 2012-04-24 International Business Machines Corporation Data prefetching using indirect addressing
US8161265B2 (en) * 2008-02-01 2012-04-17 International Business Machines Corporation Techniques for multi-level indirect data prefetching
US8161263B2 (en) * 2008-02-01 2012-04-17 International Business Machines Corporation Techniques for indirect data prefetching
US8209488B2 (en) * 2008-02-01 2012-06-26 International Business Machines Corporation Techniques for prediction-based indirect data prefetching
US7925865B2 (en) * 2008-06-02 2011-04-12 Oracle America, Inc. Accuracy of correlation prefetching via block correlation and adaptive prefetch degree selection
US8140769B2 (en) * 2009-04-20 2012-03-20 Oracle America, Inc. Data prefetcher
US8166251B2 (en) * 2009-04-20 2012-04-24 Oracle America, Inc. Data prefetcher that adjusts prefetch stream length based on confidence
US8880844B1 (en) * 2010-03-12 2014-11-04 Trustees Of Princeton University Inter-core cooperative TLB prefetchers
US8433852B2 (en) * 2010-08-30 2013-04-30 Intel Corporation Method and apparatus for fuzzy stride prefetch
US8949522B1 (en) * 2011-06-21 2015-02-03 Netlogic Microsystems, Inc. Performance of a stride-based prefetcher on an out-of-order processing unit (CPU)
CN102253901B (zh) * 2011-07-13 2013-07-24 清华大学 一种基于相变内存的读写区分数据存储替换方法
US9009449B2 (en) * 2011-11-10 2015-04-14 Oracle International Corporation Reducing power consumption and resource utilization during miss lookahead
WO2013101138A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Identifying and prioritizing critical instructions within processor circuitry
US20130185515A1 (en) * 2012-01-16 2013-07-18 Qualcomm Incorporated Utilizing Negative Feedback from Unexpected Miss Addresses in a Hardware Prefetcher
US20140082324A1 (en) * 2012-09-14 2014-03-20 Reuven Elhamias Method and Storage Device for Using File System Data to Predict Host Device Operations
US9792120B2 (en) * 2013-03-05 2017-10-17 International Business Machines Corporation Anticipated prefetching for a parent core in a multi-core chip
US9223710B2 (en) * 2013-03-16 2015-12-29 Intel Corporation Read-write partitioning of cache memory
US9971694B1 (en) * 2015-06-24 2018-05-15 Apple Inc. Prefetch circuit for a processor with pointer optimization
US9792224B2 (en) * 2015-10-23 2017-10-17 Intel Corporation Reducing latency by persisting data relationships in relation to corresponding data in persistent memory
US10180905B1 (en) 2016-04-07 2019-01-15 Apple Inc. Unified prefetch circuit for multi-level caches
US9904624B1 (en) 2016-04-07 2018-02-27 Apple Inc. Prefetch throttling in a multi-core system
US10521350B2 (en) 2016-07-20 2019-12-31 International Business Machines Corporation Determining the effectiveness of prefetch instructions
US10621095B2 (en) * 2016-07-20 2020-04-14 International Business Machines Corporation Processing data based on cache residency
US10452395B2 (en) 2016-07-20 2019-10-22 International Business Machines Corporation Instruction to query cache residency
US10169239B2 (en) 2016-07-20 2019-01-01 International Business Machines Corporation Managing a prefetch queue based on priority indications of prefetch requests
US20180095884A1 (en) * 2016-09-30 2018-04-05 Intel Corporation Mass storage cache in non volatile level of multi-level system memory
US10303575B2 (en) * 2017-01-10 2019-05-28 International Business Machines Corporation Time-slice-instrumentation facility
US10331567B1 (en) 2017-02-17 2019-06-25 Apple Inc. Prefetch circuit with global quality factor to reduce aggressiveness in low power modes
US10606752B2 (en) * 2017-11-06 2020-03-31 Samsung Electronics Co., Ltd. Coordinated cache management policy for an exclusive cache hierarchy
US11099995B2 (en) 2018-03-28 2021-08-24 Intel Corporation Techniques for prefetching data to a first level of memory of a hierarchical arrangement of memory
US20190303037A1 (en) * 2018-03-30 2019-10-03 Ca, Inc. Using sequential read intention to increase data buffer reuse
US11281585B2 (en) 2018-08-30 2022-03-22 Micron Technology, Inc. Forward caching memory systems and methods
US11093248B2 (en) * 2018-09-10 2021-08-17 International Business Machines Corporation Prefetch queue allocation protection bubble in a processor
US11243884B2 (en) * 2018-11-13 2022-02-08 Advanced Micro Devices, Inc. Control flow guided lock address prefetch and filtering
US11442867B2 (en) * 2018-12-20 2022-09-13 Micron Technology, Inc. Using a second content-addressable memory to manage memory burst accesses in memory sub-systems
US11294808B2 (en) 2020-05-21 2022-04-05 Micron Technology, Inc. Adaptive cache
US11409657B2 (en) 2020-07-14 2022-08-09 Micron Technology, Inc. Adaptive address tracking
US11422934B2 (en) 2020-07-14 2022-08-23 Micron Technology, Inc. Adaptive address tracking
US11853220B2 (en) * 2021-10-14 2023-12-26 Arm Limited Prefetcher training

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5093777A (en) 1989-06-12 1992-03-03 Bull Hn Information Systems Inc. Method and apparatus for predicting address of a subsequent cache request upon analyzing address patterns stored in separate miss stack
US5790823A (en) * 1995-07-13 1998-08-04 International Business Machines Corporation Operand prefetch table
US6055622A (en) 1997-02-03 2000-04-25 Intel Corporation Global stride prefetching apparatus and method for a high-performance processor
US6253306B1 (en) 1998-07-29 2001-06-26 Advanced Micro Devices, Inc. Prefetch instruction mechanism for processor
US6311260B1 (en) 1999-02-25 2001-10-30 Nec Research Institute, Inc. Method for perfetching structured data
US6574712B1 (en) * 1999-11-08 2003-06-03 International Business Machines Corporation Software prefetch system and method for predetermining amount of streamed data

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100346318C (zh) * 2004-04-20 2007-10-31 国际商业机器公司 根据存储器占用动态调整预读值的系统和方法
CN101548266B (zh) * 2006-12-08 2012-12-05 高通股份有限公司 用于低复杂性指令预取系统的方法和设备
CN102968294B (zh) * 2006-12-08 2015-07-22 高通股份有限公司 用于低复杂性指令预取系统的方法和设备
CN104854557A (zh) * 2012-12-20 2015-08-19 高通股份有限公司 具有多位通路预测掩码的指令高速缓存
CN104854557B (zh) * 2012-12-20 2018-06-01 高通股份有限公司 存取高速缓存的设备和方法
CN104750696A (zh) * 2013-12-26 2015-07-01 华为技术有限公司 一种数据预取方法及装置
CN104750696B (zh) * 2013-12-26 2018-07-20 华为技术有限公司 一种数据预取方法及装置
CN106776371A (zh) * 2015-12-14 2017-05-31 上海兆芯集成电路有限公司 跨距参考预取器、处理器和将数据预取到处理器的方法
CN106776371B (zh) * 2015-12-14 2019-11-26 上海兆芯集成电路有限公司 跨距参考预取器、处理器和将数据预取到处理器的方法
CN106021128A (zh) * 2016-05-31 2016-10-12 东南大学—无锡集成电路技术研究所 一种基于步幅和数据相关性的数据预取器及其预取方法
CN106021128B (zh) * 2016-05-31 2018-10-30 东南大学—无锡集成电路技术研究所 一种基于步幅和数据相关性的数据预取器及其预取方法

Also Published As

Publication number Publication date
TW541498B (en) 2003-07-11
CN1222870C (zh) 2005-10-12
RU2260838C2 (ru) 2005-09-20
RU2003119149A (ru) 2005-01-10
AU2002241682A1 (en) 2002-07-16
US6701414B2 (en) 2004-03-02
WO2002054230A3 (en) 2003-12-11
US20030196046A1 (en) 2003-10-16
HK1064170A1 (en) 2005-01-21
WO2002054230A8 (en) 2003-03-06
EP1346281A2 (en) 2003-09-24
US6584549B2 (en) 2003-06-24
US20020087800A1 (en) 2002-07-04
WO2002054230A2 (en) 2002-07-11
US20020087802A1 (en) 2002-07-04

Similar Documents

Publication Publication Date Title
CN1222870C (zh) 根据未命中距离将数据预取到高速缓存器中的系统和方法
US11467839B2 (en) Unified register file for supporting speculative architectural states
EP0996891B1 (en) Data processing circuit with cache memory
US10241795B2 (en) Guest to native block address mappings and management of native code storage
US9921842B2 (en) Guest instruction block with near branching and far branching sequence construction to native instruction block
US20170068541A1 (en) Guest instruction to native instruction range based mapping using a conversion look aside buffer of a processor
US9753856B2 (en) Variable caching structure for managing physical storage
US9207960B2 (en) Multilevel conversion table cache for translating guest instructions to native instructions
US6668307B1 (en) System and method for a software controlled cache
US6990551B2 (en) System and method for employing a process identifier to minimize aliasing in a linear-addressed cache
JP2001249806A (ja) 予測情報管理方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1064170

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20051012

Termination date: 20171218

CF01 Termination of patent right due to non-payment of annual fee