CN101467135A - 预取数据的设备及方法 - Google Patents

预取数据的设备及方法 Download PDF

Info

Publication number
CN101467135A
CN101467135A CNA200780021102XA CN200780021102A CN101467135A CN 101467135 A CN101467135 A CN 101467135A CN A200780021102X A CNA200780021102X A CN A200780021102XA CN 200780021102 A CN200780021102 A CN 200780021102A CN 101467135 A CN101467135 A CN 101467135A
Authority
CN
China
Prior art keywords
information
row
cache miss
instruction
memory
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.)
Pending
Application number
CNA200780021102XA
Other languages
English (en)
Inventor
P·S·卡尔彻
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN101467135A publication Critical patent/CN101467135A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • 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
    • 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/6024History based prefetching

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)

Abstract

本发明说明一种装置(300)与方法,用以根据指令的位置来预取信息,该指令在其执行期间造成高速缓存遗漏(cachemiss)。该欲存取之预取信息系根据先前与目前高速缓存遗漏信息来决定。例如,根据先前高速缓存遗漏的信息被储存在数据记录处以作为预取信息。此预取信息包括根据造成先前高速缓存遗漏之指令的位置信息,以及被存取以对目前高速缓存遗漏产生预取请求。该预取信息系根据目前高速缓存遗漏信息来更新。

Description

预取数据的设备及方法
技术领域
本申请案系有关决定将由数据处理器撷取使用之数据,且尤其有关决定将预取给数据处理器的信息。
背景技术
预取(prefetching)系常见施行于具有数据处理器之计算装置中的技术,藉以使处理器所需的数据及指令在预期到该处理器实际需要时而被预取。由于预取,相对于与外部存储器装置相关联的慢数据速率,在处理器之内部总线架构之相对较高的数据速率所限制的数据速率下,该处理器可取得信息。因此,因为当需要时预取信息(其可能是数据与指令)可在芯片上取得而传至处理器,所以预取通常改善处理器的整体效能。
然而,若不正确地施行预取,藉由预取根本不是处理器所需的数据,预取可能损害处理器或系统的效能。因此要了解,虽然特定的预取技术可能对一种类型的应用有利,但其可能无法充分适用于另一种类型。因此,对特定类型之应用改善预取效率的预取信息之方法及装置将是有用的。
发明内容
于一实施例中,本发明提供一种方法,该方法包括:响应于第一存储器位置无法在高速缓存中取得,接收第一高速缓存遗漏,其中,在该第一存储器位置处的信息正被存取作为执行第一指令的一部分;以及响应于接收该第一高速缓存遗漏,在第一表的第一笔记录处储存信息,该信息包括:识别该第一指令的位置的指令信息;以及基于该第一存储器位置之存储器位置信息。
于另一实施例中,本发明提供一种方法,该方法包括:在执行第一指令的同时,响应于存取第一存储器位置,接收高速缓存遗漏;以及响应于接收该高速缓存遗漏,基于该第一指令的位置而存取预取信息。
于又另一实施例中,本发明提供一种装置,该装置包括:数据处理器,包括第一输出,用以提供地址信息;第一储存位置,用以储存预取信息;预取模块,包括耦合至该第一储存位置的第一输入、第二输入、以及第一输出,该第一输出用以响应于执行于该数据处理器处之指令的位置而提供预取请求,该数据处理器造成高速缓存遗漏储存在该第一储存位置处;以及存储器控制器,包括耦合至该数据处理器之该第一输出的第一输入,耦合至该预取模块之该第一输出的第二输入,以及耦合至该预取模块之该第二输入以提供高速缓存遗漏指示符的第一输出。
附图说明
藉由参考附加图式,可更佳了解本发明,且其许多特征及优点对在此技术领域具有通常知识者系明显的。
图1系图标根据本发明揭露内容之特定实施例之与由指令存取地址位置相关联之各种记忆方式;
图2系图标根据本发明揭露内容之特定实施例之装置;
图3至图7系图标根据本发明揭露内容之对预取信息执行指令的影响;
图8系以更详细方式图标图2之预取控制器之一个实施例;
图9及图10系图标表示用于储存数据之特定实施例之表;
图11至图15系图标根据本发明揭露内容之对预取信息执行指令的影响;
图16系以更详细方式图标图2之预取控制器的另一实施例;
图17系图标表示用于储存数据之特定实施例的表;以及
图18及图19系图标根据本发明揭露内容之代表方法之流程图。
具体实施方式
依照本发明,预取信息系根据在其执行期间导致高速缓存遗漏(cache miss)之指令的位置来存取。欲存取之预取信息系根据先前及目前高速缓存遗漏信息来决定。例如,将基于先前高速缓存遗漏的信息储存在数据记录处以作为预取信息。此预取信息包括造成先前高速缓存遗漏之指令的位置信息,及被存取以对目前高速缓存遗漏产生预取请求。除此之外,根据目前高速缓存遗漏信息来更新该预取信息。参考本文中图1至图19将更佳了解本发明之特定实施例。
本发明之特定实施例将参考储存作为执行连续指令之结果的预取信息来讨论。图1包括具有复数列之表110的图标,各列表示结合数据处理器执行指令的信息。表110之行111包括指示对应指令之执行时间的信息。表110之行112包括识别指令指针至对应指令的信息。表110之行113包括识别该执行指令的信息。
储存在行111处的信息系表示执行表110之相对其它指令之对应指令的相对顺序的时间指针。请注意,时间指针T2之数字尾标指示INST2系在INST1后执行,该INST1具有对应的T1时间指针。请注意,不需要连续执行INST1与INST2,亦即,没有执行中介指令(intervening instruction)。
在行112处的指令指针指示其对应指令的位置。例如,执行在时间T1之指令INST1系于如具有hFFFF1234之十六进制值的图1中图标。该指令指针可表示任何类型存储器空间的位置,包括物理存储器空间、逻辑存储器空间等。
INST1至INST4是于执行指令时导致所产生高速缓存遗漏之指令。为了本文讨论的目的,假设所有的高速缓存遗漏为加载指令之结果,该加载指令具有LOADx之助记符号。在该加载指令助记符号中之尾标“x”表示具有A至Z的值之开端字母,其识别特定缓存器。因此该助记符号LOADA与LOADB表示欲从存储器将存取信息分别储存在缓存器A 121与缓存器B 122之指令。
执行指令INST1至INST4可使用各种寻址模式(addressing mode)存取存储器位置。具体示范于本文中的寻址模式包括直接寻址模式与缓存器间接寻址模式。该指令“LOADB hADDR1”为使用直接寻址模式之加载指令的例子,因此hADDR1为识别欲读取且储存在缓存器B 121之记忆地址之十六进制数字。请注意,该“h”前标指示该值Addr1为十六进制数字。该指令“LOADB<REGA>”为由“<>”符号表示之缓存器间接寻址模式之例子,因此于该“<>”符号内缓存器所储存的值识别从缓存器B 121读取及储存信息的存储器位置。
例如,图1包括使用缓存器间接寻址模式由此INST1表示LOADB指令的图标。该助记符号<REGA>识别缓存器A 121为含有欲读取信息之地址值。在缓存器A 121的值系标记ADDR(T1),用以指示在缓存器A 121所储存的信息,其表示于执行指令INST1时在时间T1处出现之地址位置。
为了讨论的目的,假设存储器空间之各字节系可以32位值寻址。前标“h”在本文系用来表示十六位数字。因此,图1中缓存器A 121所储存的值为具有如以位顺序参考123所指示的最高有效位(mostsignificant bit)(b31)及最小有效位(least significant bit)(b0)之32位值。
将特定助记符号与表示各存储器位置之该等位b31至b0的部分结合将进一步有助本文之讨论。将会了解,数据处理器系统可具有最小数字的字节,其可与各存储器存取进行存取。为了本文讨论的目的,假设四个字节在同一时间进行存取。因此,最小的存取区块包括结合对齐的四位区之字节。该等四字节区之各字节系以字节索引来识别,而在本例子中包括地址位置之二个最小有效位(least-significant-bits,LSB)。如图1中所进一步示范的,该用辞“基地址(base address)”称为各32位存储器位置之最高有效位(most-significant-bits,MSB)之决定数字,其中该各32位存储器位置提供识别在存储器内之对齐区域的索引值。如图所示,图1之22位基地址(base address)包括各地址位置(b31至b10)上层的22个MSB(b31至b10)。因此各唯一的22位基地址值将识别地址对齐存储器区的第一字节。该用辞“地址对齐存储器区”称为存储器之对齐区,其系在重现偏移量(recurring offset)下对齐(例如,开端),例如根据地址值在存储器(例如,h0,h400,h800,hC00等)之每一千字节(210)区。另一讨论于本文之对齐存储器区就是对齐存储器区之中央区块,该区块称为使用正索引与负索引值来参照相对集中发生作用之特定存储器区块之存储器的区块。
偏移量系用来在对齐区内将一或多个特定字节编入索引或定地址。例如,十位偏移索引(偏移索引1)可用来在一千字节区内识别任一字节。在替代的实施例中,可将偏移索引用来在较大对齐区内识别字节之区块的第一字节。例如,偏移索引2系可用来识别在一千字节区内之特定最小存取区块的八位偏移索引。同样地,偏移索引3系可用来识别在该一千字节区内之存储器之64字节区块之第一字节的四位偏移,其中该一千字节区对应于高速缓存线(cache line)大小。例如,假设对存储器各数据请求造成64字节高速缓存线被填满,则位b5至b0(区块索引)将用来识别该高速缓存线内之特定字节,而偏移索引3之特定值将索引由该22位基地址定义之一千字节对齐区内之十六个64字节区之其中一者。
在替代的实施例中,图3至图7描述根据相同组之指令的索引训练预取信息,由此该区块偏移与代表造成高速缓存遗漏之区块的中央位置有关。因为可同时容纳正与负偏移量,所以该位置被称为中央位置。
图2系根据本发明而图标系统300。该系统300包括:数据处理器310,执行表221处所指示的指令;预取训练模块320,耦合以接收来自数据处理器310的信息及提供预取信息;储存位置330,用以自预取训练模块320接收及储存预取信息;预取控制器340,用以根据在储存位置330处的信息而提供预取请求;存储器控制器,用以自该数据处理器310接收存储器存取请求信息、自该预取控制器340接收存储器预取请求、将存储器请求提供至存储器370,以及将高速缓存遗漏指示符(indicator)提供至该预取训练模块320与预取控制模块;高速缓存360,用以接收与提供从存储器控制器350所请求的信息。在图2之特定的实施例中,于集成电路装置301与外部组件302之间指示边界。
在数据处理器310内图标了表231,由表之各列(row)311表示数据处理器310所执行的指令。表之各列311识别指示指令位置之行312处的指令指针,被该指令指针所指向的指令系列于行(column)313处,时间顺序指示符系列在行311处,该行311指示相对表231之其它指令之各指令的执行顺序,以及指示由该列出之指令所存取之存储器位置之行314之地址。
于操作期间,数据处理器310提供地址信息给存储器控制器350,该存储器控制器350识别含有需要完成执行特定指令的信息的存储器位置。当请求地址处的信息显现于高速缓存360中时,存储器控制器350将提供来自高速缓存360的信息或来自存储器370的信息。存储器控制器350于所请求的信息不在高速缓存360时,将提供高速缓存遗漏。一旦撷取到信息时,由数据处理器310所请求的信息被提供给处理器310及高速缓存360。将会了解到,存储器控制器350一般将会用地址位置的信息填满高速缓存360之整个高速缓存线,该地址位置与含有由数据处理器310所需信息的地址相邻。为了讨论的目的,假设高速缓存360之各高速缓存线具有64字节长。
响应接收来自存储器控制器350之高速缓存遗漏,根据储存地址330处之预取信息,该预取控制器将决定是否由于高速缓存遗漏而有额外的信息要予以撷取。根据本文之特定实施例,造成该高速缓存遗漏之该指令的指令指针用来决定是否在储存位置330处有相关的预取信息。请注意,储存位置330一般存在于作为预取控制器之相同的记体电路装置上以于产生预取请求时减少等待时间(latency)。在一个实施例中,含在表221中所表现之记录的储存装置330之部分可以是可寻址存储器之内容,该存储器使用造成目前高速缓存遗漏之该指令的指令指针来存取。当储存位置330包含关联造成该高速缓存遗漏之该指令的条目(entry)时,该高速缓存控制器340将根据储存在储存位置330处的信息提供预取地址信息给存储器控制器350。结果,存储器控制器350将决定是否预取控制器所请求的信息已在高速缓存360中。若不在高速缓存360中,则存储器控制器350将从存储器370撷取信息以填满高速缓存360之额外高速缓存线。该预取训练模块之操作及如何决定表311信息将进一步参照图3至图7来讨论,图3至图7图标在储存地址330处之该预取信息的训练之特定例子。
响应起因于数据处理器310所执行之表221之指令之高速缓存遗漏,图3至图7之各图图标在储存位置330处之预取信息的训练。图3至图7之各图包括表221之含有造成目前高速缓存遗漏之目前指令之底部列、目前执行在行312处的指令、以及先前执行过的指令(若有)。在图3至图7之额外各图图标由该预取训练模块320所提供之预取信息至储存位置330之表331。在储存位置330处所储存的预取信息系在表331处以表格方式来表示,由此各列表示含有结合高速缓存遗漏的信息的信息记录。造成该高速缓存遗漏之存储器地址系由行411处之遗漏基地址及行413之遗漏偏移来识别。为了讨论的目的,该遗漏基地址为22位索引,该索引识别存储器空间内之一千字节对齐区域。因此,对32位地址而言,各遗漏基地址值系由22位十六进制数字来表示,该22位十六进制数字表示造成该遗漏(该遗漏地址)之地址的22个最高有效位。行413处储存之遗漏偏移系10位字,表示偏移至由该遗漏基地址所识别之一千位区。该指令指针(IP)值储存在识别造成该高速缓存遗漏之指令位置的行421处。用于识别欲预取之存储器位置的预取信息系储存于行414处之匹配位数组中。匹配计数器系保存在行415处。
用于储存预取信息之表331中记录的数字可以是固定的或可变的。在一个实施例中,储存位置为在半导体装置之固定储存位置,该半导体装置包括在图2中301所表示之集成电路装置上的模块。
图3包括藉由在时间T1执行指令LOADB<REGA>所造成高速缓存遗漏之效应之说明。具体而言,在时间T1时的高速缓存遗漏导致表311之列421处建立新的记录。表示该指令指针指向导致于时间T1时高速缓存遗漏之指令LOADB<REGA>的信息系储存在表311之行412/列421处。表示该遗漏地址的信息(该遗漏地址不在高速缓存360中表示,且因此造成时间T1时的该遗漏)系储存在行411处作为遗漏基地址,而行413处作为遗漏偏移。例如,包括遗漏地址(hFEDCB123)的22个最高有效位之22位遗漏基地址(h3FB72C)系储存在表331之行411/列421处。该遗漏基地址值识别存储器之一千字节对齐区。可以h400乘上该遗漏基地址(h3FB72C)来决定存储器中一千字节区之开端,从而将作为LSB之十个零加至该遗漏基地址。例如,h3FB72C×h400=hFEDCB000。
造成该高速缓存遗漏之地址的剩余十个位系在行413/列421处储存作为遗漏偏移。请注意,如先前讨论的,需要表示该遗漏偏移之位的数字可不同。例如,若假设存储器一次进行四个字节存取,则该10个位仅有8个位需要识别含有造成该高速缓存遗漏之存储器位置之存储器的位置,从而减轻维持10位偏移之需要。同样地,仅需要四位偏移值来识别在对齐一千位存储器区内之十六个可能高速缓存线位置的其中一者。例如,0之遗漏偏移将在该一千字节对齐区之第一字节处开始存取存储器,而1之遗漏偏移将在该一千字节区之第65字节处开始存取存储器。
数值系储存在行414/列421之匹配位数组处以识别一千字节对齐区之64字节区块(由该遗漏基地址的值来识别),该64字节区块包含在时间T1时造成该高速缓存遗漏之存储器位置。在一个实施例中,如先前讨论的,该匹配位数组储存十六位值,且该十六位值之各位(b15至b0)对应于组成一千字节区之十六个64位区块数据之其中一区块。例如,对应于行413/列421之遗漏偏移h123之位系靠向右移动该遗漏位移值六位来决定。例如,移动该值h123六位结果为h0010之十六进制值,该值h0010对应于0000 0000 0001 0000的二进制值。该效应是将该匹配位数组之第五位(b4)设定,用以指示时间T1时造成该遗漏之存储器地址系位于一千字节对齐区之第五个64位于区块处。
在列421之行415处之计数系设定为零以指示该匹配位数组信息还没被后续的高速缓存遗漏更新。
响应在时间T2时结合执行指令LOADC hFEDCB1E7之高速缓存遗漏,图4包括由高速缓存预取训练模块320至表331所提供信息的图标。图4之箭头492指向表示由目前高速缓存遗漏所影响记录的列,包括列421表示的记录及列422表示的新纪录。
表示该指令指针指向导致时间T2时高速缓存遗漏之指令的信息系储存在行412/列422处。于时间T2时造成遗漏之指令所存取表示该地址位置(hFEDCB1E7)的信息系储存在行411/列422处作为遗漏基地址(H3fb72c),以及在行413/列422处作为十位遗漏偏移(h1E7)。
将行414/列422处之匹配位数组的值储存以指示一千字节对齐区之64字节区块(由该遗漏基地址的值来识别),该一千字节对齐区包含时间T2时造成高速缓存遗漏之存储器位置。对应于列422之遗漏偏移h1E7之64字节区块是第7位(b6),由于时间T2时之高速缓存遗漏,该第7位(b6)造成h0080之匹配位数组值储存在行414/列422处。
将行415/列422处的计数器设定为零,用以指示该匹配位数组信息尚未被后续的高速缓存遗漏更新。
各新的高速缓存遗漏亦造成表331之各存在之的记录被评估,用以决定是否该先前储存记录之任一记录具有对应于相同一千字节对齐区之遗漏基地址。例如,因为列421与列422具有相同的基底遗漏地址值(h3FB72C),所以决定将造成该二列高速缓存遗漏被存取的存储器储存在相同的一千字节对齐区。因此,响应匹配先前遗漏基地址之目前(T2)遗漏基地址,将更新先前匹配位数组。例如,藉由OR运算目前匹配位数组与先前遗漏位数组的值,将信息储存于行414/列421之先前遗漏基地址处。例如,由于时间T2时之高速缓存遗漏,该预取训练模块提供信息,用以将列421之该匹配位数组之值更新成值h0090(h0010 OR h0080)。
将列421之行415处的计数值增加为1,用以指示由于该目前遗漏而更新该匹配位数组信息。
响应结合时间T3时执行指令LOADB hFEDCC 234之高速缓存遗漏,图5包括由高速缓存预取训练模块320指向表331所提供的信息的图标。图5之箭头493指向由该目前高速缓存遗漏所影响的记录,该箭头493仅包括列423所表示的新记录。
将表示该指令指针指向导致T3时该高速缓存遗漏之指令的信息储存在表311之行421/列423处。在时间T3时,造成该遗漏之指令所存取表示该地址位置(hFEDCC 234)的信息系储存在行411/列423作为遗漏基地址(H3FB730),以及在行413/列423处作为十位遗漏偏移(h234)。
将列423之行414处之匹配位数组的值储存,以指示一千字节对齐区之64字节区块(由该遗漏基地址的值来识别),该一千字节对齐区包含时间T3时造成高速缓存遗漏之存储器位置。对应于列421之遗漏偏移h234之64位区块是第9位(b8),由于时间T3时之高速缓存遗漏,该第9位(b8)造成h0100之匹配位数组值储存在列423之行414处。
将列423之行415处的计数器设定为零,用以指示该匹配位数组信息尚未被后续的高速缓存遗漏更新。
因为于时间T3时造成该高速缓存遗漏之地址不具有表331中之任何其它记录之相同遗漏基地址,因此于时间T3之高速缓存遗漏不影响表331之其它记录的任一记录。
响应结合时间T4时执行指令LOADB<REGA>之高速缓存遗漏,图6包括高速缓存预取训练模块320指向表331所提供的信息的图标。图6之箭头494指向该目前高速缓存遗漏所影响的记录,包括列421与422所表示的记录,以及列424表示的新纪录。
在时间T4时导致高速缓存遗漏而表示该指示指针指向该指令的信息系储存在行412/列424处。表示该地址信息(HFEDCC234)在时间T4时由造成该遗漏之指令所存取的信息储存在行411/列424处作为遗漏基地址(h3FB72C),而在行413/列424处作为十位遗漏偏移(h23)。
将值储存在行414/列424之匹配位数组处以指示一千字节对齐区内之64字节区块的位置,该一千字节对齐区包含在时间T4时造成该高速缓存遗漏之存储器位置。由于在时间T4之该高速缓存遗漏,对应于含有遗漏偏移h23之64字节区块之位系第一位(b0),该第一位(b0)导致h0001之匹配位数组值储存在行414/列424处。
将列424之行415处的计数器设成零,用以指示该匹配位数组信息尚未被后续的高速缓存遗漏更新。
由于这些记录具由相同的一千字节对齐区索引,在时间T4处之高速缓存遗漏亦造成表331以额外的预取信息来更新两个现有记录。例如,于行414/列421及行414/列422处之预取信息需要被更新,因为两者与列424具有相同的遗漏地址值(h3FB72C),其表示目前的高速缓存遗漏。因此,行414/列421之匹配位数组被更新成h0091,而行414/列422之匹配位数组被更新成0081。将会了解,更新列421与列422之预取信息发生了,因为若在时间T4所需的信息已在时间T1或时间T2时预取,则该高速缓存遗漏在时间T4时早就避免了。这将在本文中进一步讨论有关不同的实施例。
由于目前之遗漏,在列421与422之行415处之计数器值系以1递增,用以指示对各列之匹配位数组信息的一些更新。
图7包含响应在时间T5时高速缓存遗漏结合指令LOADC<REGB>的执行而由高速缓存预取训练模块320对表331所提供的信息的示范。图7之箭头495指向被目前的高速缓存遗漏所影响的记录,其包括列421、422、424表示的记录,及列425表示的新纪录。
在时间T5时导致该高速缓存遗漏而表示该指令指针指向该指令的信息储存在行412/列425处。表示该地址位置(HFEDCB3C5)在时间T5时由造成该遗漏之指令所存取的信息储存在行411/列425处作为遗漏基地址(h3FB72C),而行413/列425处作为十位遗漏偏移(h3C5)。
将值储存在行414/列424之匹配位数组处以指示含有存储器位置之一千字节对齐区之64字节区块,存储器位置在时间T5时造成该高速缓存遗漏。由于在时间T5之该高速缓存遗漏,对应于列421之遗漏偏移h3CF之64位区块系第十六位(b15),而造成h8000之匹配位数组值储存在行414/列425处。
将行415/列425处的计数器设成零,用以指示该匹配位数组信息尚未被后续的高速缓存遗漏更新。
各高速缓存遗漏亦造成表331之各存在的记录被评估,用以决定是否任何先前储存的记录具有对应于相同一千字节对齐区之匹配位数组。在先前的例子中,列421、422、以及424处之预取信息需要被更新,因为这些列之每一列与列425具有相同的遗漏地址值(h3FB72C),其表示目前的高速缓存遗漏。因此,将列421之匹配位数组更新成h8091,将列422之匹配位数组更新成h8081,以及将列424之匹配位数组更新成h8001。
由于目前的遗漏,在列421、422、以及424之行415处的计数器值以1来递增,用以指示对各列之该匹配位数组信息的一些更新。
预取控制器340之操作系参考图8来讨论。为了示范的目的,假设描述在图7之预取信息系在新的高速缓存遗漏发生时该目前组的预取信息。图8图标接收高速缓存遗漏指示符511、指令指针512指向造成该高速缓存遗漏指示符511发生之该指令、以及造成该高速缓存遗漏之该存储器位置之基地址的预取控制器340。
响应接收高速缓存遗漏指示符,该预取控制器340将决定是否在储存位置330处之预取信息包括结合造成该目前高速缓存遗漏之指令指针的记录。例如,对于接收高速缓存遗漏指示符的反应,表331中找不到预取信息,其中该接收高速缓存遗漏指示符系由于执行具有指令指针h8111的指令而产生,因为该指令指针不在表331中表示。然而,若该高速缓存遗漏系由于在指令指针h8100处执行指令而产生,则该预取控制器将在表331中找到预取信息之两个条目(见列421与424)。该预取控制器340可使用最久远的条目(亦即,由行414/列421所表示的条目),以对存储器控制器350发出预取请求。
来自于预取控制器340之预取请求包括从先前存取存储器提供结合存储器之特定区块的存储器地址。因为行414/列421之该匹配位数组之各组位对应于存储器之64位区块,该预取控制器将提供四个存储器预取请求给存储器控制器350。例如,在列421处之匹配位数组值h8091已设定对应于先前自存储器存取数据之四个存储器区块之四个位(b15,b8,b4,及b0)。因此,该预取控制器将提供四个存储器地址(四个区块之每一区块一个地址)给存储器控制器350。该预取控制器340可在该64字节区块内提供任何地址给该存储器控制器360,用以预取该对应区块之所有64字节。对应于匹配位数组中的一组位之存储器区块之第一字节可藉由向左移动对应的遗漏基底数组值十位来决定,并且将此结果加到对应于该组位之图8的表530之该偏移。因此,对h8091之匹配位数组值而言,该预取控制器可请求自一千字节边界地址位置偏移h000(b0)、h100(b4)、h200(b8)、以及h3C0(b15)。
在本发明的一个实施例中,用于产生该预取请求之一千字节边界系在该预取控制器340处接收到之目前遗漏基地址。因此,参考图8,若该遗漏基地址513具有hCFFFFF之22位值,则该预取控制器将提供FFFFFC00(b0)、FFFFFD00(b4)、FFFFFDC0(b8)、以及FFFFFFC0(b15)之地址值给该存储器控制器350。这些地址值将造成由存储器控制器350预取之四个高速缓存线,假设这些值目前不在高速缓存360中。请注意,相对于预取会包括存储器之连续区块之存储器之一较大区域,被预取之存储器的区块可能是存储器之非连续区。
注意,虽然在表331之行411处该遗漏基地址信息在预取训练期间是需要来决定哪些后续的高速缓存遗漏是在存储器之共同一千字节区处,但该高速缓存控制器不需要该遗漏基地址信息,而使用目前高速缓存遗漏之该遗漏基地址以产生预取地址。因此,不同的表可维持由预取控制器340使用以产生预取请求。图9图标也可储存在储存位置330之表332,该表332包含由该预取控制器340所使用之预取信息。具体而言,指令指针信息储存在表332之行911处,而匹配位数组信息储存在表332之行912处。不对各指令指针值维持多个记录,而是表332对给定的指令指针仅包含一个记录。此允许表332使用导致目前高速缓存遗漏之指令指针值,以于高速缓存遗漏发生时表示由该预取控制器所存取之可寻址存储器的内容。若可寻址存储器之内容的请求识别到匹配指令指针在行511处,则其对应的匹配位数组系被该预取控制器340用来提供预取地址给存储器控制器350。
图10图标表333之替代实施例,该表333可用来替代表332以储存由预取控制器340所用的预取信息。行921与922对应于如先前所述之行911与912。然而,表333包括行923以维持高速缓存遗漏计数器。藉由使用对高速缓存遗漏反应之特定记录,该高速缓存遗漏计数器值表示该预取控制器已产生预取请求之次数。因此,用在记录之该高速缓存遗漏计数器每次递增,其匹配位数组信息被用来产生预取请求。
应会了解,除了先前描述外,可用其它偏移方案,由此该区块偏移与对齐区之开始有关,该对齐区系根据如三十二位地址之上部二十二位所定义之一千字节存储器边界。例如图11至图15系根据在图3至图7所描述相同组的指令而图标训练预取信息的替代实施例,藉此该区块偏移与表示造成高速缓存遗漏之区块的中央位置有关。该位置称作为中央位置是因为可同时容纳正偏移与负偏移。
参考图11至图15,储存在储存位置330之预取信息系在表341之处以表格形式来表示,藉此各列表示含有结合高速缓存遗漏的信息的信息记录。行441至443与445储存如先前所述及与行411至413及415有关的信息。行444于对齐区内储存预取信息,该对齐区系集中在含有导致该高速缓存遗漏之地址的存储器区块处。因此,于表341之列451中的各条目之八个MSB表示在中央区块之前的八个64字节之数据区块的其中一区块,而于列451中的各条目之八个LSB表示在中央65字节区块之后之八个64字节区块之其中一区块。
参考图11,响应时间T1时所执行的指令LOADB<REGA>,将行444/列451处之该匹配位数组清除,例如,将所有位设成零。请注意,于建立条目时,清除该匹配位数组,因为含有造成该遗漏(例如图1中的hFEDCB123)之地址之64字节的数据区块将是决定表示预取信息之其它区块偏移之参考。
参考图12,响应时间T2时所执行之指令造成高速缓存遗漏,清除列452处之该匹配位数组(例如将所有位设成零),且评估表341之列451处的信息以决定是否其预取信息被更新。关于本实施例,若造成目前高速缓存遗漏之存储器位置系在八个64字节存储器区块(亦即+-512字节)内,则用在特定列之该预取信息将被更新。这可由以下方程序来决定:(目前的遗漏地址向右移动六位)-(移动六位所估计出列的遗漏地址)。因此,关于图12,相对于在列451处造成高速缓存遗漏之存储器位置(hFEDCB123),造成目前高速缓存遗漏之存储器位置(hFEDCB1E7)具有+h3之区块偏移(hFEDCB1E7向右移动六-hFEDCB123向右移动六)。因此,将列451之该匹配位数组之中央位置(即第11个MSB(b10))向左的第三个位设定,因为在列452处造成该高速缓存遗漏之地址系在列451处造成该高速缓存遗漏之地址的512字节内,而造成列451处之h400的匹配位数组值。
参考图13,响应时间T3时所执行之指令造成高速缓存遗漏,清除列453之匹配位数组(例如将所有位设成零),且评估表341之列451与452处的信息以决定是否有预取信息被更新,如同与图12有关讨论。列451(hFEDCB123)之遗漏位置对列453(hFEDCC234)之遗漏位置的评估揭露列453之该遗漏位置系与列451之该遗漏位置偏移-44个区块。因此,列453之该匹配位数组不在列451之中央区块的八个区块内,且列451之该匹配位数组值不用额外的预取信息来更新。列452(hFEDCB1E7)之遗漏位置对列453(hFEDCC234)之遗漏位置的评估揭露列453之该遗漏位置系与列452之该遗漏位置偏移-+41个区块。因此,列453之该匹配位数组不在列452之该匹配位数组的八个区块内,且列452之该匹配位数组值不用额外的预取信息来更新。
参考图14,响应时间T4时所执行之指令造成高速缓存遗漏,清除列454之匹配位数组(例如将所有位设成零),且评估表341之列451至453处的信息以决定是否有预取信息被更新,如同与图12有关讨论。列451(hFEDCB123)之遗漏位置对列454(hFEDCB023)之遗漏位置的评估揭露列454之该遗漏位置系与列451之该遗漏位置偏移-h4个区块。因为,该遗漏位置彼此间系在四个区块内,列451处之匹配位数组藉由对该匹配位数组之中央位置之右方设定第四位(b4)而以额外的预取信息来更新。此造成h410的值被储存在列451之匹配位数组处。列452(hFEDCB1E7)之遗漏位置对列454(hFEDCB023)之遗漏位置之评估揭露列454之遗漏位置与列452之遗漏位置偏移-h7区块。因为,该遗漏位置彼此间系在八个区块内,因此列452处之匹配位数组藉由对该匹配位数组之中央位置之右方设定第七位(b1)而以额外的预取信息来更新。此造成h0002的值被储存在列452之匹配位数组处。列453(hFEDCC234)之遗漏位置对列454(hFEDCB023)之遗漏位置之评估揭露列454之遗漏位置与列453之遗漏位置偏移超过八个区块,而因此对列453之匹配位数组值没有影响。
参考图15,响应时间T5时所执行之指令,清除列455之匹配位数组(例如将所有位设成零),且评估表341之列451至454处的信息以决定是否有预取信息被更新,如同与图12有关讨论。列451(hFEDCB123)之遗漏位置对列455(hFEDCB3C5)之遗漏位置的评估揭露列455之该遗漏位置系与列451之该遗漏位置偏移+hA个区块,而因此对列451之匹配位数组值没有影响,因为列455之该遗漏位置不在八个区块内。列452(hFEDCB1E7)之遗漏位置对列455(hFEDCB3C5)之遗漏位置的评估揭露列454之该遗漏位置系与列452之该遗漏位置偏移+h7个区块。因为该遗漏位置彼此间系在八个区块内,因此列452之匹配位数组藉由对该列452处之匹配位数组之中央位置之左方设定第七位(b14)而以额外的预取信息来更新。此造成h4002(对图15作细微改变)的值被储存在列452之匹配位数组处。列453(hFEDCC234)之遗漏位置对列455(hFEDCB3C5)之遗漏位置之评估揭露列455之遗漏位置与列453之遗漏位置偏移超过八个区块,而因此对列453之匹配位数组值没有影响。列453(hFEDCC234)之遗漏位置对列455(hFEDCB3C5)之遗漏位置之评估揭露列454之遗漏位置与列453之遗漏位置偏移超过八个区块,而因此对列453之匹配位数组值没有影响。列454(hFEDCB023)之遗漏位置对列455(hFEDCB3C5)之遗漏位置之评估揭露列455之遗漏位置与列451之遗漏位置偏移+hE区块,而因此对列454之匹配位数组值没有影响。
预取控制器340之操作系参考图16来讨论。为了示范的目的,假设描述在图15之表处之预取信息系在新的高速缓存遗漏发生时该目前组的预取信息。图15图标接收高速缓存遗漏指示符611、指令指针612指向造成该高速缓存遗漏指示符511发生之该指令、以及造成该高速缓存遗漏之该存储器位置之遗漏地址之预取控制器340。
响应接收高速缓存遗漏指示符,该预取控制器340将决定是否在储存位置330处之预取信息包括结合造成该目前高速缓存遗漏之指令指针的记录。例如,对于接收高速缓存遗漏指示符的反应,表341中找不到预取信息,其中该接收高速缓存遗漏指示符系由于执行具有指令指针(IP)值h8111的指令而产生,因为该指令指针不在表341中表示。然而,若高速缓存遗漏系由于在指令指针h8100处执行指令而产生,则该预取控制器将在表341中找到预取信息之两个条目(见列451与454)。该预取控制器640可使用最久远的条目(亦即,由行444/列421所表示的条目),以对存储器控制器350发出预取请求。请注意,在替代的实施例中,对各指令指针仅维持一条目,如先前参考图10所讨论的,及以下更进一步的讨论。
因此,参考图16,当具有h8100之指令指针值的指令在遗漏地址613处造成高速缓存遗漏时,该预取控制器340将提供等同于该遗漏地址613-该偏移(-h100)之一地址值给该存储器控制器350,该偏移(-h100)对应于表630处之位b4,且提供等同于该遗漏地址613-该偏移(hC0)之另一地址值给该存储器控制器350,该偏移(hC0)对应于表630处之位b10。这些地址值将造成两条高速缓存线被存储器控制器350预取,假设该等地址值目前不在高速缓存360中。
根据本发明之特定实施例,两个表系维持在储存位置330处。一个表(例如表341)作用为指令历史缓冲器以关联造成用于连续执行指令的高速缓存遗漏之地址,如参考图11至图15所讨论。第二表(例如图17之表334)具有包含由该预取控制器340所需要信息的记录。图11之行931至933对应于如先前描述(图10)之行921至923。行934储存匹配计数,其在表334之给定列处定义预取信息。
在一个实施例中(见图17),其中对各指令指针(IP)仅维持一个记录,当记录从具有相同IP值的表341移除时,更新表334中的记录。用于表334之记录的匹配计数信息系藉由将表341之匹配计数器加到表334之匹配计数器而更新,且表334之匹配位数组系藉由将表341之匹配位数组对表334之匹配位组OOR运算而更新。
预取控制器340可使用记录之匹配计数器与高速缓存遗漏计数器来决定于高速缓存遗漏造成IP命中表334时是否提供预取信息给存储器控制器。例如,若将表334之记录次数用来产生预取信息(亦即,行933处之高速缓存遗漏计数器值于比较定义该匹配位数组(亦即,于行934处之匹配计数器)之匹配数时系够大的),则该表334之记录次数通常指示储存在该记录之该预取信息可能是有用的。在一个实施例中,该预取控制器340根据记录将仅产生预取请求,当根据该记录的信息而以下叙述是真的时:(匹配计数值)*(比例门槛值)>(高速缓存遗漏计数值),该比例门槛值系比例数值(scaling value),例如2至4的范围内。请注意,该比例门槛值之较高数值可能消耗更多的频宽。
在一个实施例中,表341可比表334维持较少的记录数。例如,表341可对各最近的32个高速缓存遗漏包含记录,而表334可对数百或数千个指令指针包含多个记录。表334可用表341处被覆写的信息来更新。例如一旦表341之各记录满了,表341处将储存新的记录,而造成含有最久远之高速缓存遗漏信息的记录被删除。然而,如先前所述,在删除前,表341之最久远高速缓存遗漏记录处的信息可用来储存信息于表333处。请注意,可定期清除表334之条目。例如,图2之装置可使用单一指针定期清除对应于表334之列的记录,例如每2000个周期。
图18图标根据本发明之方法。于方块711处,响应第二存储器位置无法在高速缓存中取得,而接收第一高速缓存遗漏指示符,其中在第一存储器位置的信息正被存取作为执行指令的一部分。于方块712处,响应该第一高速缓存遗漏,将基于该第一高速缓存遗漏的信息储存在储存位置的第一笔记录处。如先前所讨论的,该信息可包括识别第一指令的位置的指令信息,例如指令指针,且识别存储器地址的存储器信息系由在方块711处造成第一高速缓存遗漏之指令所存取。根据在方块712处所述之第一高速缓存遗漏,含有信息之记录的例子包括表331至334,以及341之各列。例如,识别被存取之存储器位置的存储器信息可以是该存储器位置之地址或出自对齐区之偏移,例如地址对齐区或中央区块对齐区。当该存储器信息系出自对齐区的偏移,该偏移信息可识别信息之个别字节或数据之整个区块被预取。先前所述的实施例包括主张单一位位置,该单一位位置对应于结合对齐区之数据的复数区块之其中一区块。或者,该存储器信息可包括识别结合特定指令位置之地址范围之复数值。
于方块713处,响应第二存储器位置无法在高速缓存中取得,接收第二高速缓存遗漏,其中第二存储器位置处的信息正被存取作为执行指令的部分。存取该第二记体之指令可以是方块711的第一指令,或不同的指令。
于方块714处,信息系根据该第二高速缓存遗漏来储存。在一个实施例中,当该第二高速缓存遗漏是结合先前高速缓存遗漏之对齐区之地址的结果时,结合先前高速缓存遗漏之记录系藉由储存额外的预取信息来更新。例如,响应地址区或中央区块对齐区内之高速缓存遗漏,表331至334,以及341中之条目以此种方式更新。请注意,响应高速缓存遗漏,该表332至334系以来自表331及341的信息作更新。在替代的实施例中,响应该第二高速缓存遗漏,信息亦可予以储存而建立新的记录,例如先前描述有关表331至334处的条目。
图19系根据本发明图标方法之流程图。于方块731处接收高速缓存遗漏。响应存取第一指令之第一存储器位置,于方块732处,决定高速缓存遗漏是否发生。若是,该流程前进到方块733,其中预取信息系根据该第一指令之存储器位置而存取。于方块734处,信息之区块系根据该预取信息来存取。例如,作为高速缓存线而具有相同大小的信息的区块可储存在该高速缓存线处。
在前面的说明书中,以上已描述本发明之原理,而与特定的实施例有关。然而,在此技术领域具有通常技艺者了解如以下申请专利范围所述,在不脱离本发明之范畴下,可对该等实施例之任何一个或多个实施例作一或多个修改或一或多的其它改变。例如,将会了解,预取信息可包括欲预取的信息的各区块之加权值(weight value)。例如,含有经常造成高速缓存遗漏之数据的区块可以给予比其它数据的区块更大的加权。除此之外,虽然本发明以大致描述高速缓存遗漏,但是应该了解,本发明可容纳多个层级之高速缓存遗漏。例如,训练可相关L2高速缓存遗漏而发生,而预取信息之产生可相关L1高速缓存遗漏来发生。应该也会了解,系统300可于存取虚拟存储器时在集成电路装置301处包括转换后备缓冲器(translation look-aside buffer,TLB)以降低于L2 TLB之能量及负载。亦可预期储存位置330之各种架构。例如,可用具有单一或多个读写端口之储存位置。例如,该匹配位数组可能是饱和计数器(saturating counter)。因此,可以示范而非限制的意思来看待说明书与图式,且所有此种修改及其它改变将纳入于本发明之范畴内。
与一个或多个特定实施例有关之任何一个或多个益处、一个或多个其它优点、对一个或多个问题之解决办法、或其任何组合已于上面描述。然而,可能造成任何益处、优点、或解决办法发生或变成更明显的益处、优点、对问题之解决办法或任何要素并不是要推断为任何或所有之申请专利范围之关键、需要或必要之特征或要素。

Claims (12)

1、一种方法,包括:
响应于第一存储器位置无法在高速缓存中取得,接收第一高速缓存遗漏指示符,其中,在该第一存储器位置处的信息正被存取作为执行第一指令的一部分(711);以及
响应于接收该第一高速缓存遗漏指示符,在第一表的第一笔记录处储存信息(712),该信息包括:
识别该第一指令的位置(412、421)的指令信息;以及
基于该第一存储器位置(422、411、413)的存储器位置信息。
2、根据权利要求1所述的方法,进一步包括:
响应于第二存储器位置无法在该高速缓存中取得,接收第二高速缓存遗漏指示符,其中,在该第二存储器位置处的信息正被存取作为执行第二指令的一部分;以及
响应于确定该第二存储器位置是在距离储存在该第一条目处的该第一存储器位置的定义距离之内,在该第一笔记录(421、414)处储存第一预取信息,其中,该第一预取信息是基于该第二存储器位置。
3、根据权利要求2所述的方法,其中,该第一预取信息识别包含该第二存储器地址的存储器位置范围。
4、根据权利要求3所述的方法,其中,该第一预取信息包括与参考存储器位置有关的偏移。
5、根据权利要求2所述的方法,其中,该第一预取信息包括该第二存储器地址。
6、根据权利要求2所述的方法,进一步包括:
响应于接收该第二高速缓存遗漏指示符,在该第一表的第二笔记录处储存信息,该信息包括:
识别该第二指令的位置(412、422)的指令信息;以及
识别该第二存储器位置(422、411、413)的存储器位置信息。
7、根据权利要求2所述的方法,进一步包括:
响应于确定该第二存储器位置是在距离储存在该第一条目处的该第一存储器位置的定义距离之内,递增储存在该第一笔记录(421、415)处的值。
8、根据权利要求1所述的方法,其中,该第一表(331)是内容可寻址存储器,其中,该内容用于寻址该CAM指令位置信息。
9、根据权利要求1所述的方法,进一步包括:
响应于执行在该第一指令位置处的指令,接收第二高速缓存遗漏指示符(713);以及
响应于确定该第一笔记录包括识别该第一指令位置的指令信息,决定将要预取的存储器(733)。
10、根据权利要求9所述的方法,其中,将要预取的存储器包括存储器的多个非连续区。
11、根据权利要求9所述的方法,进一步包括:
响应接收到该第二高速缓存遗漏指示符时,响应于确定该第一笔记录包含识别该第一指令的该位置的指令信息,递增储存在该第一笔记录(923)处的值。
12、一种装置,包括:
数据处理器(300),包括第一输出,用以提供地址信息;
第一储存位置(330),用以储存预取信息;
预取模块(340),包括耦合至该第一储存位置的第一输入、第二输入、以及第一输出,该第一输出用以响应于在该数据处理器中执行的指令的位置而提供预取请求,该数据处理器造成高速缓存遗漏储存在该第一储存位置处;以及
存储器控制器(350),包括耦合至该数据处理器的第一输出的第一输入,耦合至该预取模块的第一输出的第二输入,以及耦合至该预取模块的该第二输入用以提供高速缓存遗漏指示符的第一输出。
CNA200780021102XA 2006-06-07 2007-04-05 预取数据的设备及方法 Pending CN101467135A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/448,337 2006-06-07
US11/448,337 US7774578B2 (en) 2006-06-07 2006-06-07 Apparatus and method of prefetching data in response to a cache miss

Publications (1)

Publication Number Publication Date
CN101467135A true CN101467135A (zh) 2009-06-24

Family

ID=38509069

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA200780021102XA Pending CN101467135A (zh) 2006-06-07 2007-04-05 预取数据的设备及方法

Country Status (8)

Country Link
US (1) US7774578B2 (zh)
JP (1) JP5203358B2 (zh)
KR (1) KR101423748B1 (zh)
CN (1) CN101467135A (zh)
DE (1) DE112007001397B4 (zh)
GB (1) GB2453079B (zh)
TW (1) TW200821925A (zh)
WO (1) WO2007145700A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102156633A (zh) * 2011-04-18 2011-08-17 北京北大众志微系统科技有限责任公司 预执行指导的数据预取方法及系统

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8391309B2 (en) * 2007-02-20 2013-03-05 Arris Group, Inc. Method and system for using mnemonic symbols to provision channel attributes with an attribute mask
WO2008155812A1 (ja) * 2007-06-18 2008-12-24 Fujitsu Limited プロセッサおよびプリフェッチ支援プログラム
US9274965B2 (en) 2008-12-15 2016-03-01 International Business Machines Corporation Prefetching data
US8195889B2 (en) * 2009-03-25 2012-06-05 Advanced Micro Devices, Inc. Hybrid region CAM for region prefetcher and methods thereof
US8677049B2 (en) * 2009-04-13 2014-03-18 Advanced Micro Devices, Inc. Region prefetcher and methods thereof
US8850123B2 (en) 2010-10-19 2014-09-30 Avago Technologies General Ip (Singapore) Pte. Ltd. Cache prefetch learning
US20120144124A1 (en) * 2010-12-07 2012-06-07 Advanced Micro Devices, Inc. Method and apparatus for memory access units interaction and optimized memory scheduling
US8856452B2 (en) * 2011-05-31 2014-10-07 Illinois Institute Of Technology Timing-aware data prefetching for microprocessors
US9026739B2 (en) 2012-03-07 2015-05-05 Advanced Micro Devices, Inc. Multimode prefetcher
US9176878B2 (en) * 2012-03-15 2015-11-03 Oracle International Corporation Filtering pre-fetch requests to reduce pre-fetching overhead
US9098418B2 (en) * 2012-03-20 2015-08-04 Apple Inc. Coordinated prefetching based on training in hierarchically cached processors
US9311247B1 (en) 2012-03-20 2016-04-12 Marvell International Ltd. Method and apparatus for detecting patterns of memory accesses in a computing system with out-of-order program execution
US9164900B1 (en) 2012-05-23 2015-10-20 Marvell International Ltd. Methods and systems for expanding preload capabilities of a memory to encompass a register file
US9116815B2 (en) * 2012-06-20 2015-08-25 Advanced Micro Devices, Inc. Data cache prefetch throttle
US9390018B2 (en) 2012-08-17 2016-07-12 Advanced Micro Devices, Inc. Data cache prefetch hints
US9348753B2 (en) 2012-10-10 2016-05-24 Advanced Micro Devices, Inc. Controlling prefetch aggressiveness based on thrash events
US9021210B2 (en) 2013-02-12 2015-04-28 International Business Machines Corporation Cache prefetching based on non-sequential lagging cache affinity
US9047173B2 (en) * 2013-02-21 2015-06-02 Advanced Micro Devices, Inc. Tracking and eliminating bad prefetches generated by a stride prefetcher
KR102070136B1 (ko) 2013-05-03 2020-01-28 삼성전자주식회사 프리페치를 위한 캐시 제어 장치 및 그 캐시 제어 장치를 이용한 프리페치 방법
US9256541B2 (en) * 2014-06-04 2016-02-09 Oracle International Corporation Dynamically adjusting the hardware stream prefetcher prefetch ahead distance
US9971694B1 (en) 2015-06-24 2018-05-15 Apple Inc. Prefetch circuit for a processor with pointer optimization
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
US10296460B2 (en) * 2016-06-29 2019-05-21 Oracle International Corporation Prefetch bandwidth throttling by dynamically adjusting miss buffer prefetch-dropping thresholds
US10331567B1 (en) 2017-02-17 2019-06-25 Apple Inc. Prefetch circuit with global quality factor to reduce aggressiveness in low power modes
KR102429429B1 (ko) 2017-03-24 2022-08-04 삼성전자주식회사 전자 장치 및 그 동작방법
US11232533B2 (en) * 2019-03-15 2022-01-25 Intel Corporation Memory prefetching in multiple GPU environment
US11726917B2 (en) * 2020-06-26 2023-08-15 Advanced Micro Devices, Inc. Method and apparatus for a page-local delta-based prefetcher
US11561796B2 (en) * 2020-07-15 2023-01-24 International Business Machines Corporation Linked miss-to-miss instruction prefetcher
JP2022097858A (ja) 2020-12-21 2022-07-01 富士通株式会社 計算機および計算方法
US11580032B2 (en) * 2021-01-20 2023-02-14 Arm Limited Technique for training a prediction apparatus
US11630670B2 (en) 2021-07-21 2023-04-18 Apple Inc. Multi-table signature prefetch
US11822922B2 (en) 2021-12-31 2023-11-21 International Business Machines Corporation Miss-driven instruction prefetching

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6092149A (en) * 1997-05-28 2000-07-18 Western Digital Corporation Disk drive cache system using a dynamic priority sequential stream of data segments continuously adapted according to prefetched sequential random, and repeating types of accesses
US6047363A (en) 1997-10-14 2000-04-04 Advanced Micro Devices, Inc. Prefetching data using profile of cache misses from earlier code executions
US6584549B2 (en) * 2000-12-29 2003-06-24 Intel Corporation System and method for prefetching data into a cache based on miss distance
JP3969009B2 (ja) * 2001-03-29 2007-08-29 株式会社日立製作所 ハードウェアプリフェッチシステム
US6782453B2 (en) 2002-02-12 2004-08-24 Hewlett-Packard Development Company, L.P. Storing data in memory
US7139897B2 (en) 2002-04-01 2006-11-21 Hewlett-Packard Development Company, L.P. Computer instruction dispatch
US20060059311A1 (en) 2002-11-22 2006-03-16 Van De Waerdt Jan-Willem Using a cache miss pattern to address a stride prediction table

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102156633A (zh) * 2011-04-18 2011-08-17 北京北大众志微系统科技有限责任公司 预执行指导的数据预取方法及系统
WO2012142820A1 (zh) * 2011-04-18 2012-10-26 北京北大众志微系统科技有限责任公司 预执行指导的数据预取方法及系统

Also Published As

Publication number Publication date
US7774578B2 (en) 2010-08-10
GB0900132D0 (en) 2009-02-11
KR101423748B1 (ko) 2014-08-01
KR20090026333A (ko) 2009-03-12
JP5203358B2 (ja) 2013-06-05
US20070288697A1 (en) 2007-12-13
WO2007145700A1 (en) 2007-12-21
JP2009540429A (ja) 2009-11-19
TW200821925A (en) 2008-05-16
DE112007001397B4 (de) 2020-10-29
GB2453079B (en) 2011-06-29
DE112007001397T5 (de) 2009-04-23
GB2453079A (en) 2009-03-25

Similar Documents

Publication Publication Date Title
CN101467135A (zh) 预取数据的设备及方法
CN108874694B (zh) 空间存储器串流预取引擎的设备和方法、制造和测试方法
JP3618385B2 (ja) データをバッファリングする方法およびそのシステム
CN109690484A (zh) 在虚拟机进入时转换
CN104169868B (zh) 用于在中央处理单元中执行机器指令的方法和系统
CN102498477B (zh) Tlb预取
US7089398B2 (en) Address translation using a page size tag
CN104169877B (zh) 将不相邻指令区分符变换为相邻指令区分符
CN1084005C (zh) 用于动态控制地址空间分配的方法和设备
CN1632877B (zh) 可变延滞时间高速缓冲存储器及提供数据的方法
CN102906721B (zh) 与访问地址空间并行地对地址空间调整大小
CN102841865B (zh) 高性能缓存系统和方法
CN100517274C (zh) 高速缓冲存储器及其控制方法
EP2786245B1 (en) A data processing apparatus and method for performing register renaming without additional registers
AU658914B2 (en) Improving computer performance by simulated cache associativity
WO1981001894A1 (en) Cache memory in which the data block size is variable
CN100392623C (zh) 用于从地址高速缓存去除条目的方法和设备
CN104335168A (zh) 分支预测预加载
TW201246069A (en) Variable caching structure for managing physical storage
CN103176914A (zh) 一种低缺失率、低缺失惩罚的缓存方法和装置
US20030188128A1 (en) Executing stack-based instructions within a data processing apparatus arranged to apply operations to data items stored in registers
JP4047281B2 (ja) キャッシュメモリをメインメモリに同期させる方法
US20040015644A1 (en) Cache memory and method for addressing
US6915405B2 (en) Emulated target associative memory system with a multi-digit incrementable validity counter
JP4828879B2 (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
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20090624