一种根据由指令引起的高速缓存器未命中之间的距离为指令预取数据的预取器。在一个实施例中,预取器包括存储预取表的存储器,预取表含有一个或多个包括由指令引起的高速缓存器未命中之间的距离的条目。在另一个实施例中,根据记录在预取表中的指令的高速缓存器未命中之间的距离确定预取的数据元素的地址。(*该技术在2021年保护过期,可自由使用*)
【技术实现步骤摘要】
本专利技术的实施例涉及从存储器中预取数据。具体的,本专利技术涉及从存储器预取数据以供处理器使用的方法和装置。背景由处理器执行的指令经常使用存储在例如随机存取存储器(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、10本文档来自技高网...
【技术保护点】
一种预取器,根据由指令引起的高速缓存高速缓存器未命中之间的距离为指令预取数据。
【技术特征摘要】
...
【专利技术属性】
技术研发人员:M阿布达拉,K阿尔达亚尼,
申请(专利权)人:英特尔公司,
类型:发明
国别省市:US[美国]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。