用于数据流的储存感知预取的制作方法

文档序号:6351098阅读:206来源:国知局
专利名称:用于数据流的储存感知预取的制作方法
技术领域
本发明涉及计算系统,更具体来讲,涉及有效高速缓存行预取。相关技术说明现代微处理器可包括一个或多个处理器内核或处理器,其中每个处理器都能够执行软件应用程序的指令。这些处理器通常是流水线化的,其中处理器包括一个或多个数据处理级,该一个或多个数据处理级与放置在该级之间的存储元件(例如寄存器和阵列)串联连接。在理想情况下,每个时钟周期为流水线的每级产生指令的有用执行。然而,流水线中的停滞可导致在该特定流水线级期间不执行有用功。停滞,通常是多周期停滞,的一个实例是数据高速缓存或指令高速缓存未中。可能会有与从较高级高速缓存和/或系统存储器检索数据关联的很多的等待时间。由于处理器频率比系统存储器访问次数更快地提高,因此等待时间迅速地增长,该等待时间是从存储器检索数据需要的处理器周期的总数。在各种实施方案中,系统存储器可包括用于处理器的两个或多个层的高速缓存层次结构。在系统存储器的层次结构中的较后级可包括经存储器控制器对随机访问存储器(DRAM)、双列直插存储器模块(dimm)、硬盘等的访问。对这些存储器的较低级的访问可需要相当数量的时钟周期。可在多内核微处理器上的多内核中共享的多级高速缓存在具有高速缓存命中时帮助减轻该等待时间。然而,由于高速缓存大小增加并且高速缓存层次结构的较后级更远离处理器内核放置,因此确定请求的存储器行是否在高速缓存中存在的等待时间同样增加。如果处理器内核具有随后是没有命中的每级高速缓存的串行或并行访问,随后是DRAM访问的存储器请求,则服务于存储器请求的总等待时间可变得很多。一个减少由于上述问题而导致的总性能下降的解决方案是使由于高速缓存未中而导致的高速缓存行填充事务与每时钟周期内的多指令的乱序执行重叠。然而,由于顺序回退的缘故,该顺序回退可防止具有有用功的停滞周期的完全重叠,因此若干时钟周期的停滞仍降低处理器的性能。另一解决方案是在当前处理的数据之前,对预定数量的高速缓存行的较低级存储器,例如DRAM,使用推测预取请求。该预取请求可与当前存储器请求串行或并行到一个或多个级的高速缓存子系统。因此,在当前存储器请求之后,从存储器层次结构访问随后存储器请求的等待时间可大大减少。由于较早的推测预取请求,数据可已经在高速缓存、存储器控制器中存在,或可立刻到达存储器控制器。数据流预取单元用来检测数据流。数据流可定义为定位连续数据块的存储器访问的序列。连续数据块可储存在一个或多个级的存储器层次结构中。例如,数据块可储存在主存储器中,并可读出并发送到较高级存储器层次结构中的一个或多个高速缓存。该连续数据块从存储器层次结构的较低级到较高级的输送可由高速缓存行填充事务引起。可选地,该连续数据块的输送可由预取事务引起。在一个实例中,数据流可在执行使图像或像素锐化的算法中使用。这样的算法可在循环中使用下列表达式a[i] =b[i]+c[i]。检测数据流可包括识别以单调增或减方式定位连续组高速缓存行的存储器访问的序列。响应于检 测数据流,数据流预取单元可开始预取当前请求高速缓存行之前预定数量的高速缓存行。数据流预取单元跟踪具有散布负载的数据流并储存访问(此后称为混合访问数据流)并忽略未中访问的访问类型(加载或储存)。如在本发明中使用的,储存操作或指令是写访问,而加载操作或指令是读访问。因此,数据流预取单元在只读状态中预取全部高速缓存行。该只读状态可以例如与MOESI高速缓存相干协议关联。在来自预取行上命中的处理器的需求访问流中的第一储存操作需要发出状态改变请求。状态改变请求获得许可从而写入高速缓存行。状态改变请求减少预取高速缓存行的益处。考虑到上述内容,期望用于有效高速缓存行预取的有效方法和机制。
发明概要本发明提供在处理器中用于有效高速缓存行预取的系统和方法。在一个实施方案中,计算系统包括高速缓存、较低级存储器、在配置为输送非推测需求请求的处理器内核上的加载/储存缓冲器,以及在处理器内核上的预取单元。在一个实例中,数据流可在用于使图像或像素锐化的算法的执行中使用。这样的算法可在循环中使用下列表达式a[i]=b[i]+c[i]。预取单元储存对应于特定数据流的特性化数据。 检测数据流可包括识别以单调增或减方式定位连续组数据块的存储访问的序列。不与其他现有数据流的未中地址连续的初始对应于未中地址可以是新数据流的开始。一旦预取单元检测到新数据流,则预取单元可进入预定列队时期。紧接着特定数据流的列队时期完成,预取单元可响应于没有检测到给定数据流的第一写访问,开始在没有写权限的情况下从较低级存储器预取给定数据流的一部分。同样,预取单元可响应于在列队时期完成之后检测到给定数据流的第一写访问,在具有写权限的情况下开始从较低级存储器预取给定数据流的分离部分。在这时获得写权限可为在随后预取高速缓存行上检测的储存操作避免随后状态改变损失。因此,仍保留预取具有随后储存操作的高速缓存行的益处。一旦参考下列描述和附图,这些和其他实施方案将变得明显。


图I是示出示例微处理器的一个实施方案的广义框图。图2是示出实行乱序执行的通用处理器内核的一个实施方案的广义框图。图3是示出存储器接口的一个实施方案的广义框图,该实施方案示出存储器请求的不同来源。图4是示出预取单元状态和状况转变的表格的一个实施方案的广义框图。图5是预取单元内特性化数据的存储的广义框图。图6是在处理器中有效高速缓存行预取的方法的一个实施方案的流程图。图7是在处理器中继续有效高速缓存行预取的方法的一个实施方案的流程图。图8是在处理器中继续有效高速缓存行预取的方法的一个实施方案的流程图。图9是在处理器中继续有效高速缓存行预取的方法的一个实施方案的流程图。尽管本发明易受各种修改和可替换形式,但特定实施方案在附图中经由实实例出并在此详细描述。然而,应理解附图及其详细描述并不旨在使本发明限于公开的特定形式,正相反,本发明覆盖按附加权利要求定义落入本发明的精神和范畴内的全部修改、等同物和替换物。发明详述在下列描述中,阐述许多特定详述以提供对本发明的全面理解。然而,本领域技术人员应认识到可在没有这些特定详述的情况下实践发明。在一些实例中,众所周知的电路、结构和技术没有详细示出从而避免使本发明变得模糊。参考图I,不出不例处理器100的一个实施方案。在不出实施方案中是微处理器 的处理器100可包括存储器控制器120、接口逻辑140、一个或多个处理单元115,处理单元115可包括一个或多个处理器内核112和对应于高速缓存存储器子系统114;纵横互连逻辑116,以及共享高速缓存存储器子系统118。在一个实施方案中,微处理器100的示出的功能性合并在单集成电路上。接口 140大体上为离开处理器100的输入/输出(I/O)设备提供到共享高速缓存存储器子系统118和处理单元115的接口。如在本发明中使用的,通过随后是字母的参考数字指代的元件可通过单独数字集体指代。例如,处理单元115a-115b可集体称为处理单元115或单元115。I/O设备可包括外围网络设备例如打印机、键盘、监视器、摄影机、读卡器、硬盘或软盘驱动器或驱动器控制器、网络接口卡、视频加速器、音频卡、调制解调器、各种数据采集卡例如通用接口总线(GPIB)或现场总线接口卡,或其他采集卡。另外,接口 140可用来与其他微处理器和/或其他处理节点通信。大体上,接口逻辑140可包括用于从对应的链路接收分组并缓冲分组从而在对应的链路上传输的缓冲器。任何合适的流控机制可用来传输分组到微处理器100和从微处理器100传输分组。微处理器100可经各自存储器控制器120耦合到各自存储器。存储器可包括任何合适存储器设备。例如,存储器可包括一个或多个RAMBUS动态随机访问存储器(DRAM)、同步DRAM (SDRAM)、DRAM、静态RAM等。微处理器100的地址空间可在多个存储器中划分。每个处理器100或包括微处理器100的各自处理节点可包括用来确定哪个地址映射到哪个存储器,并因此特定地址的存储器请求应路由到哪个微处理器100或处理节点的存储器映射。在一个实施方案中,地址的相干点是存储器控制器120,该存储器控制器120耦合到储存对应于地址的字节的存储器。存储器控制器120可包括用于接口连接到存储器的控制电路。另外,存储器控制器120可包括用于使存储器请求排队的请求队列。除上述之外,存储器控制器120可包括或耦合到预取单元。大体上,纵横互连逻辑116配置为响应于在耦合到接口 140的链路上接收的控制分组,从而响应于处理器内核112和/或高速缓存存储器子系统114生成控制分组,从而响应于存储器控制器120为服务选择的事务生成探测命令和响应于分组,并从而为包括微处理器的中间节点通过接口逻辑140路由分组到其他节点。接口逻辑140可包括逻辑从而接收分组并使分组同步到纵横互连116使用的内部时钟。纵横互连116可配置为从处理器内核112输送存储器请求到共享高速缓存存储器子系统118或存储器控制器120以及存储器子系统的较低级。同样,纵横互连116可经存储器控制器120从较低级存储器输送接收的存储器行和控制信号到处理器内核112和高速缓存存储器子系统114和118。在纵横互连116、存储器控制器120、接口 140和处理器单元115之间的互连总线实施方式可包括任何合适的技术。
高速缓存存储器子系统114和118可包括配置为储存数据块的高速高速缓存存储器。高速缓存存储器子系统114可集成在各自处理器内核112内。可选地,高速缓存存储器子系统114可在背面高速缓存配置或直列配置中随意耦合到处理器内核112。进一步地,高速缓存存储器子系统114可实施为高速缓存的层次结构。如期望的,更靠近处理器内核112的高速缓存(层次结构内)可集成进入处理器内核112。在一个实施方案中,高速缓存存储器子系统114每个都代表L2高速缓存结构,并且共享高速缓存子系统118代表L3高速缓存结构。
高速缓存存储器子系统114和共享高速缓存存储器子系统118都可包括耦合到对应于高速缓存控制器的高速缓存存储器。处理器内核112包括用于根据预定通用指令集执行指令的电路。例如,可选择x86指令集架构。可选地,可选择Alpha、PowerPC或任何其他通用指令集架构。大体上,处理器内核112为数据和指令分别访问高速缓存存储器子系统114。如果没有在高速缓存存储器子系统114中或共享高速缓存存储器子系统118中发现请求的块,则读请求可生成并传输到存储器控制器120,在途中传输到未中块映射到的位置。图2示出实行乱序执行的通用处理器内核200的一个实施方案。指令高速缓存(i-高速缓存)和对应于转译后备缓冲器(TLB)202可储存软件应用程序的储存指令和地址以便访问指令。高速缓存202和222都可设置在处理器内核200内或设置在外面,例如在图I的高速缓存存储器子系统114中。如果没有i_高速缓存未中,则指令取出单元(IFU)204可在每个时钟周期中从i-高速缓存202取出多个指令。IFU 204可包括使指示器保持到在i_高速缓存202中取出的下个指令的地址的程序计数器,该地址可与i-TLB中的地址比较。IFU 204也可包括分支预测单元从而在执行单元在较后流水线级中确定实际结果之前预测条件指令的结果。解码器单元206解码多个取出单元的操作码,并可在顺序回退队列例如重排序缓冲器208中分配条目。在重排序缓冲器208内的分配后条目可在整数队列212和浮点队列216内分配。如期望的,加载/储存单元220内输入队列的条目可在执行单元210内的分配后或同时分配。将执行单元210和/或加载/储存单元220中条目的分配认作为分派。执行单元210的讨论将依照对存储器访问的描述。将存储器访问例如加载和储存操作发出到加载/储存单元220。加载/储存单元220可包括队列和逻辑从而执行存储器访问指令。同样,验证逻辑可存在于加载/储存单元220中从而确保加载指令从正确的最新储存指令接收转发数据。加载/储存单元220可发送存储器访问请求224到芯片上一个或多个级的数据高速缓存(d-高速缓存)222。高速缓存的每级可具有其自己的TLB,用于与存储器请求224的进行地址比较。高速缓存222的每级可用串行或并行方式搜索。如果请求的存储器行没有在高速缓存222中发现,则存储器请求224发送到较低级高速缓存存储器例如高速缓存114和118,或可能发送到离开芯片的存储器。串行或并行搜索、到其他存储器的可能请求以及等待请求的存储器行到达可需要很多的时钟周期。来自执行单元210和加载/储存单元220的结果可在共用数据总线230上存在。结果可发送到重排序缓冲器208。在一个实施方案中,重排序缓冲器208可以是根据程序命令确保指令顺序回退的先入先出(FIFO)队列。这里,接收其结果的指令为回退标记。如果指令是队首,则其可使其结果发送到对应于架构寄存器文件。队列212和216的每个可保存对应的架构寄存器文件。架构寄存器文件可保存处理器内核200的通用寄存器的架构状态。然后重排序缓冲器中的指令可顺序回退并且其队首指示器可调节到程序命令中的随后指令。在共用数据总线230上的结果可发送到执行单元210以便转发值到等待结果的指令的操作数。例如,算术指令可具有依靠先前算术指令结果的操作数,或加载指令可需要通过功能单元214中地址生成单元(AGU)计算的地址。在这些等待指令具有用于其的操作数的值并且硬件资源可用于执行指令时,其可从各自队列212和216乱序发出到功能单元214和216或加载/存储单元220中的合适的资源。
未提交或未回退的存储器访问指令在加载/存储单元220中具有条目。来自最新未提交较旧的储存指令的未完成或未提交的加载指令的转发数据值可放置在共用数据总线230上,或可简单地路由到在加载/存储单元220内的加载缓冲器中的合适的条目。返回执行单元210,队列212和216可储存等待它们的操作数变得可用的对应的整数和浮点指令。寄存器重命名和执行调度可在队列212和216内发生,或在未示出的周围对应的电路内发生。在操作数可用并且硬件资源同样可用时,指令可从队列212和216乱序发出到整数功能单元214、浮点功能单元218和/或发出到加载/储存单元220。每组整数功能单元214可为整数计算机计算例如加法、减法、地址生成、条件转移指令结果的确定、乘法、除法或其他计算包括算术逻辑单元(ALU)。浮点功能单元218可包括电路从而执行浮点加法、减法、乘法、除法、平方根、整数到浮点转换、浮点到整数转换或其他计算。在一个实施方案中,多个整数功能单元214可实例化以便增加微处理器指令吞吐量。例如,处理器内核200可配置为使执行的多个软件线程执行。微处理器100和对应的处理器内核200的操作系统为软件应用程序分配存储器区域。在编译软件应用程序时,应用可包括多处理。在这样的实施方案中,每个处理可在应用执行之前拥有其自己的资源例如存储器图像,或指令和数据的实例。同样,每个处理可包括处理指定信息例如寻址代码、数据并可能寻址堆阵或堆栈的地址空间;数据和控制寄存器例如栈指示器、通用和浮点寄存器、程序计数器和另外寄存器中的变量;以及操作系统描述符例如标准输入、标准输出和另外描述符,以及安全属性例如处理器拥有者和处理的权限组。软件应用程序的每个流程可还分为软件线程。许多现代微处理器配置为同时执行两个或更多软件线程。这些微处理器可具有可用于操作系统的内核并行执行和分配的两个或更多硬件线程或指令串(strand)。例如,对于多线程微处理器,每个整数功能单元214可依靠特定单元214内硬件资源的可用性在每个时钟周期内接收特定线程的一个或多个整数指令。从指令取出单元204到整数队列212的电路可修改从而在不使每个单元的硬件加倍的情况下管理处理器内核200的两个或更多指令串。例如,保存线程架构状态的寄存器可加倍,但执行硬件资源可以不加倍。在另一实施方案中,处理器内核200的多线程执行可包括完整簇的复制的实例,其中簇用于单线程的执行,并且在一个实施方案中包括从解码器单元206到指令功能单元214的电路。在这样的实施方案中,该电路可称为整数执行簇。在另一实施方案中,浮点协处理器可包括从解码器单元206到浮点功能单元218的电路。相比具有整数执行簇的实例可具有该浮点协处理器较少数量的实例。在这样的实施方案中,每个浮点协处理器对应于两个或更多线程,借此每个整数执行簇对应于单独的不同线程。指令取出单元204包括电路从而在内核200中管理多线程,并向每个簇供应特定线程的一个或多个可用对应于指令。在此情况下,每个簇是指 令串或硬件线程。尽管可期望从电路逻辑视角实例浮点单元218的多个复制附随集成功能单元214的每个复制,但可以不期望从硬件实施的视角实例。例如,浮点功能单元(FPU) 218可容纳消耗许多片上述积的复杂逻辑。同样,浮点操作不经常在程序代码中执行。因此,可以不激发硬件设计师在片上创造浮点单元218的独立昂贵复制。现在参考图3,示出示出存储器请求不同来源的存储器接口 300的一个实施方案。注意在图3中示出的组件示出组件的大体上组织和耦合,而不是组件的实际物理放置。在图2中使用和在图3中使用的电路和逻辑因此编号。物理放置的实例可在图I和图2中发现。在一个实施方案中,存储器子系统330包括高速缓存存储器332,高速缓存存储器332可对应于具有附随未中缓冲器334的计算系统的内核上L2高速缓存。在这样的实施方案中,内核上LI i-高速缓存202和LI d-高速缓存222可具有关联的内核上未中缓冲器,以便保存关联在各自高速缓存中未中的存储器基准指令的地址。在另一实施方案中,高速缓存存储器332可包括多级高速缓存层次结构,例如附随未中缓冲器334内一个或多个未中缓冲器的LI i-高速缓存202、LI d-高速缓存222和L2 d_高速缓存,以及L3 d_高速缓存。其他结合可能并考虑。较低级存储器340可包括计算系统的主存储器。高速缓存存储器332和预取单元320可耦合到较低级存储器340。预取单元320可经存储器子系统330发送预取请求或独立形成存储器子系统330。预取单元320可以不放置在未中缓冲器334内,以便允许预取单元320检测高速缓存命中和高速缓存未中。该检测可在预取单元320的列队状态和传播状态中有用,如在下文进一步详细描述的。高速缓存存储器332可容纳先前级的高速缓存行的全部。在一个实施方案中,为从LI d-高速缓存222去除复杂性,LI d-高速缓存222可实施为直写高速缓存,并且L2高速缓存管理存储器排序和相干问题。因此,在内核200内的存储器请求发送到LI d-高速缓存222和L2高速缓存,例如高速缓存存储器332。高速缓存存储器332可服务于来自储存队列310和加载缓冲器312的非推测需求请求。另外,高速缓存存储器332可服务于来自预取单元320的推测预取请求。来自预取单元320的推测预取请求可旨在数据实际需要时之前使数据带入高速缓存存储器332,这可减少关联存储器访问的等待时间。在一个实施方案中,未中缓冲器334包括使遇到防止其完成的条件的全部读写操作,例如加载、预取和储存指令,排队的多个条目。例如,请求的高速缓存行可以不在高速缓存存储器332中存在。可选地,请求的高速缓存行可在高速缓存存储器中存在,但其没有特定高速缓存相干状态。例如,在高速缓存存储器332中对应的高速缓存行不在高速缓存相干协议的排外状态时,高速缓存未中可为储存操作而发生。可发送包括附加等待时间从而服务于储存操作的随后状态改变请求。在一个实施方案中,可为存储器模型挑选高速缓存存储器332为全局排序点。为遵循存储器模型的规则,可需要具有存储器层次结构内的全局排序点。该全局排序点可包括高速缓存存储器332,高速缓存存储器332可以是具有为全部储存操作用作基准的关联直写LI高速缓存的L2高速缓存。高速缓存存储器332可负责确保全部用户观察到储存操作的相容与合适的排序。
存储器请求可至少发源于IFU 202、储存队列310和加载缓冲器312。这些存储器请求可称为需求存储器请求。如上述描述,IFU 202可配置为选择取出的线程并为选择的线程从i_高速缓存205取出指令,该选择的线程可对应于具有图3中对应的L2高速缓存存储器332的LI高速缓存。储存队列310可配置为为挑选的线程输送存储器请求到相同LI和L2高速缓存,用于为挑选的线程写出提交的储存指令的数据。加载缓冲器312可配置为为挑选的线程输送存储器请求到相同LI和L2高速缓存,以便读取执行的加载指令的数据。数据流预取单元或预取单元320可配置为为挑选的 进程输送推测预取请求到相同LI和L2高速缓存,以便在当前请求的高速缓存行之前预取预定数量的高速缓存行。预取单元320可用来检测数据流。数据流可定义为以单调增或减方式定位连续组高速缓存行的存储访问的序列。因此,在一个实施方案中,在处理器内核200上包括储存队列310、加载缓冲器312和预取单元320的LSU 220内至少三个来源争夺经高速缓存接口 325到L2高速缓存存储器332的访问。如之前所述的,高速缓存存储器332可服务于来自储存队列310和加载缓冲器312的非推测需求请求。另外,高速缓存存储器332可在预取单元320检测数据流之后服务于来自预取单元320的推测预取请求。存储器子系统330服务的每个请求的命中/未中状况可从存储器子系统330输送到LSU 220。在一个实施方案中,命中/未中状况可用来检测数据流和确定何时为数据流发起预取请求。例如,预取单元320可检测不与其他现有数据流的未中地址连续的未中地址。该特定未中地址可以是新数据流的开始。一旦达到连续和邻近于该特定地址的未中地址的预定数量,则列队时期可结束并且预取单元可为该新数据流发起数据预取。在一个实施方案中,在发送不请求写权限的预取请求时,预取单元320可配置为检测加载或储存类型的非推测需求请求。该需求请求可以在以加载和储存访问散布的混合访问数据流中。通过这样做,预取单元230可以能够在请求写权限的列队时期结束之后检测第一存储器访问操作。在一个实施方案中,当储存操作可修改访问数据时,储存操作是明确或不明确请求写权限的操作的实例。可修改访问数据的其他操作可明确或不明确地相似请求写权限。例如,读取/加载排外操作是既可修改读取数据,又清楚地旨在修改读取数据的加载操作的实例。因此,某些读取型操作也可明确或不明确地请求写权限。考虑利用请求写权限的这样操作的任何期望结合的实施方案。在各种实施方案中,请求写权限的检测操作之后的预取请求可包括为预取数据获得写权限,借此检测这样操作之前的预取请求可在没有写操作的情况下预取数据。利用这样的途径,请求写权限的先前检测操作之后的推测预取请求可避免从获得写权限的需要导致的较后状态改变损失。在一个实施方案中,预取单元320可为每个预取请求利用粘性储存比特,以便跟踪列队时期之后第一储存操作是否为特定数据流检测。一旦设定,该粘性储存比特可保持设定,即使预取单元320为相同数据流随后检测加载访问。在预取单元320内为特定数据流的条目设定对应于粘性储存比特时,其可指示在对应于特定数据流的非推测需求请求地址组中储存操作较早检测。之后,对应于该特定数据流的发送的推测预取请求可请求已请求高速缓存行的写权限。现在转到图4,示出表格350的一个实施方案,表格350示出预取单元350的状态和状况转变。大体上高速缓存行边界地址X和高速缓存行边界偏移用来跟踪以单调增方式定位连续组高速缓存行的地址。示出地址对应于加载或储存访问类型。在一个实施方案中,在预取单元320中监控的特定数据流可具有三个状态的一个分配、列队和传播。在需求请求地址不匹配现有数据流中跟踪的地址时,新数据流可在预取单元320内分配。接下来,新分配数据流进入列队状态。在列队状态中,数据流经历列队阶段,借此随后需求请求未中地址与对应于先前未中地址和预期下个连续未中地址比较。在确认预定义数量的随后未中地址对应于该数据流时该数据流从列队状态转变为传播状态。在传播状态中,预取单元320跟踪属 于该相同数据流的随后访问,并可发出推测预取请求以便在当前定位的高速缓存行之前检索高速缓存行。进一步地,如果设定对应的粘性储存比特,则发送的推测预取请求同样获得预取高速缓存行的写权限。粘性储存比特、预取状态和写权限状态全部在表格350中示出。在表格350内的增量区可确定用来相对于当前需求请求预取地址的偏移。在示出的实例中,地址X-2可通过预取单元query不属于跟踪的任何显存数据流。因此分配新数据流。在示出的实例中,每个需求请求地址都对应于高速缓存未中从而简化实例。在示出的实例中,预定数量的3个未中地址用来限定从列队状态到传播状态的转变。在该实例中的3个未中地址包括X-2、X-1和X。另一预定数量和另外限定可基于该转变的模拟挑选。一旦在传播状态中,预取单元320在没有写权限的情况下发送预取列中Y表示的预取请求。预取请求导致来自较低级存储器的数据从LI高速缓存、L2高速缓存、该两个高速缓存或其他结合取出或检索进入LI高速缓存、L2高速缓存、该两个高速缓存或其他结合。该数据的检索优选在LSU220需要数据之前完成。预取的概念确认数据访问不断地展现空间局部性。空间局部性的普遍代表是数据流,其中来自存储器块的数据在连续增(或减)序列中访问以使通过至少一个指令定位连续高速缓存行。在预取单元320检测数据流时,预测以与在相同方向的当前高速缓存行邻近的高速缓存行作为未来基准是合理的。预取单元320可导致处理器在软件应用程序实际需要这些邻近高速缓存行之前检索这些邻近高速缓存行的一个或多个。注意在其他实施方案中,预取单元320也可耦合到较低级的存储器层次结构。例如,列队和传播可基于L2/L3命中和未中。许多这样的替换物是可能的并被加以考虑。在一个实施方案中,I的增量通过预取单元320内的逻辑计算。该增量值可用来发现第一推测预取地址X+1和当前需求请求地址X之间的偏移。在该实例中,4个高速缓存行的预定数量行用于预取请求。因此,使用推测地址X+1到X+4。在另一实施方案中,可挑选不同预定数量的高速缓存行。另外,该值可为每个预取请求计算为不同值。用对应于地址X+2的访问设定粘性储存比特。该粘性储存比特为该数据流的较后访问保持设定。因此,对应的预取请求获得写权限。现在转到图5,示出图3的预取单元320内特性化数据存储的一个实施方案。预取单元320可包括数据流阵列410。在一个实施方案中,每个条目412可配置为使数据流的特性化数据,例如通过LSU 220生成的地址排队。在另一实施方案中,每个条目412可以不使地址排队,直到命中/未中状况发送到LSU 220。请求地址段420可保存这样的地址。在一个实施方案中,仅对应于高速缓存行边界的地址部分排队。对应于字节偏移的比特可以不排队。
特性化数据可包括需求请求的访问类型(加载或储存操作)并可在字段428中排队。对应于生成的地址的高速缓存命中/未中状况可在字段430中排队。粘性储存比特值可在字段432中保存。可选地,不是条目依赖的粘性储存比特和其他状况信息,例如数据流状态(即分配、列队、传播)可在对应于特定数据流阵列410的寄存器中排队,而不是储存在每个条目412中。
控制逻辑440可控制新数据流的分配。在一个实施方案中,控制逻辑440可包括位于预取单元320内中间位置中的电路和存储元件。在可替换实施方案中,每个数据流阵列410可具有其自己的对应的控制逻辑。另外,控制逻辑440可更新现有数据流的状况和地址信息。在通过LSU 220或可替换通过未中缓冲器334输送地址时,可在该地址和每个数据流阵列410中请求地址段420与推测地址段424之间执行比较。在发现匹配时,控制逻辑440可添加另一条目到对应的数据流阵列410。数据流的状态(即分配、列队、传播)可储存在状况信息段434或分离寄存器中。该状态信息可通过控制逻辑440更新。在一个实施方案中,由于芯片上面积约束,因此每个需求请求地址和每个推测预取地址可以不单独地储存在数据流阵列410内字段420和424中。相反,指示字字段422和426可用来储存一系列地址。对应于字段424的推测地址可用来发送预取请求到图3的高速缓存存储器332。在一个实施方案中,这些预取请求在数据流具有传播状态时发送。如果生成地址不匹配数据流阵列410内排队地址或取得地址,则可创造新数据流。在一个实施方案中,没有来自比较的匹配可以是创造新数据流的唯一条件。在另一实施方案中,另外条件可包括生成地址可以不在未中缓冲器334的任何条目中发现,其中指示预取请求的状况信息已经为该地址发送。其他限定条件是可能的并加以考虑。如果新数据流通过控制逻辑440确定从而创造,则做出到特定数据流阵列410的分配。控制逻辑440可使用任何期望的置换算法例如最近最少使用(LRU)的算法,从而选择空阵列410或从而选择阵列410来重写。状况信息字段434也可包括流识别值(SID)、上/下比特、队列地址头、长度字段和深度字段。长度字段和队列地址头可定义数据流的边界。在数据流首先分配时,队列字段头可容纳数据流中第一高速缓存行的地址。深度字段可指示与对应的数据流关联的预取的水平(例如积极或保守)。该值可用来取得高速缓存行的数量从而在预取期间请求。高速缓存行的数量可依靠特定实施为每个预取变化或是一致数量。预取可以是积极的或保守的。积极水平可在预取的深度,或当前从计算机程序加载或通过计算机程序存储进入的高速缓存行之前通过请求预取的高速缓存行的数量中反映。在理想情况下,预取实施的深度最优化因此预取充足数量的高速缓存行,从而避免高速缓存未中等待时间损失,而同时不导致过多预取。过多预取指代预取多于给予处理器可用的当前最大数据带宽必需的高速缓存行。通过控制逻辑440确定高速缓存行的数量从而预取可使用存储器等待时间对带宽的比率。大于对存储器可观的该比率的预取请求数量可允许在没有等待时间导致的任何缝隙的情况下利用系统全部带宽。其他因素可用来确定高速缓存行的数量从而预取例如该数量的同时数据流。一个数据流的最优预取深度可以不与另一数据流的最优深度相同。控制逻辑440可在预取参数例如预取深度上供应动态支持和数据流特定控制。注意尽管在图5中的字段在特定顺序中示出,但其他结合是可能并且另外字段可利用。为字段420-434储存信息的比特可以或 可以不连续。相似地,数据流410和控制逻辑440的安排可为更优设计折衷使用其他放置。现在参考图6,示出在处理器中有效高速缓存行预取的方法500的一个实施方案。方法500可由本领域技术人员修改以便取得可替换的实施方案。同样,在该实施方案中的步骤在相继顺序中示出。然而一些步骤可在与示出不同的顺序中发生,一些步骤可同时实行,一些步骤可与其他步骤结合,并且一些步骤可在另一实施方案中缺少。在示出的实施方案中,处理器内核200可在方框502中执行一个或多个软件应用程序的指令。内核200取出一个或多个软件应用程序的指令。这些取出的指令可解码并重命名。重命名指令为执行较后拾取。在方框504中,存储器基准指令可发送需求请求到存储器。在一个实施方案中,对应的地址可输送到预取单元320。在另一实施方案中,对应于地址可以不输送到预取单元320,直到在方框506中高速缓存命中/未中状况已知。在地址输送到预取单元320时,在方框508中,地址和预取单元320内存储的需求请求地址和存储的推测地址比较。如果没有发现地址匹配(有条件方框510),则在方框512中,可在预取单元320中分配新数据流。附加限定条件可在如上述描述的分配发生之前使用。在方框514中此时数据流可具有从分配到列队的其状态转变。可在用于之后的比较的上/下比特的帮助下取得下个地址。可选地,可取得两个地址,如果上/下值仍未知,则其中一个地址是单调增的值并且另一地址是单调减的值。在另一实施方案中,从分配到列队的状态转变可以不发生,直到为具有取得值的数据流执行之后的比较。方法500的控制流程然后返回方框502。如果发现地址匹配(有条件方框510),则在方框516中,检查数据流的状态(即分配、列队、传播)。如果数据流是具有分配或列队状态的较新数据流(有条件方框518),则方法500的控制流程移动到方框B。否则,方法500的控制流程移动到方框A。现在转到图7,示出在处理器中继续有效高速缓存行预取的方法600的一个实施方案。相似于方法500,方法600可由本领域技术人员修改以便取得可替换实施方案。同样,在该实施方案中的步骤在相继顺序中示出。然而一些步骤可在与示出不同的顺序中发生,一些步骤可同时实行,一些步骤可与其他步骤结合,并且一些步骤可在另一实施方案中缺少。在示出的实施方案中,方法600的控制流程用通过在具有传播状态的数据流内的地址匹配达到的方框A开始。如果当前访问是用于对应的地址的第一需求请求访问(有条件方框602),则传播命中为对应的数据流而发生。如在本发明中使用的,传播命中指代基于地址生成一个或多个预取请求的数据流(例如通过阵列410识别的数据流)内的地址比较匹配或命中。例如,具有在状况段434中储存的“传播”状态的特定数据流阵列410中推测地址段424中储存的值上(或在得自字段424和指示字字段426的值上)的地址匹配可以是传播命中。在方框604中可确定新预取参数。例如,新增量值如在图4的表格350中示出的一个值可计算。如果预取深度或取出的高速缓存行的数量不是定值,则该值也可在此时计算。在一个实施方案中,控制逻辑440可确定输送的需求请求地址在其第一高速缓存访问中通过比较该值与储存在每个数据流阵列410的字段420中的地址来利用。在其第一高速缓存访问中利用的地址仍不储存在字段420中。虽然地址值可基于先前预取储存在字段424中。如果输送的需求请求的访问类型是储存操作(有条件方框608),则在方框616中,可设定粘性储存比特。一旦设定该粘性储存比特,其保持设定。在方框618中,使用取得的预取参数发送具有写权限的一个或多个预取请求。推测地址可得自当前匹配需求请求地址、增量值和预取深度值。由于发送具有写权限的预取请求,因此修改检索高速缓存行中数据的任何较晚储存操作不经历状态改变请求损失。方法600的控制流程然后移动到方框D。
如果需求请求的访问类型不是储存操作(有条件方框608),则粘性储存比特的检查发生。如果粘性储存比特设定(有条件方框612)例如来自数据流内先前储存访问并且在相同高速缓存行中可能较早,则在方框618中,使用取得的预取参数发送具有写权限的一个或多个预取请求。再次,由于发送具有写权限的预取请求,因此修改检索高速缓存行中数据的任何较晚储存操作不经历状态改变请求损失。再次参考图4的表格350,地址X+3的第一次发生和地址X+4的发生落入该类别。否则,如果粘性储存比特没有设定(有条件方框612),则在方框614中,使用取得的预取参发送没有写权限的一个或多个预取请求。方法600的控制流程然后移动到方框D。如果当前访问不是用于对应的地址的第一需求请求访问(有条件方框602),则传播命中为对应的数据流而发生。如在本发明中使用的,非传播命中指代不基于地址生成任何预取请求的数据流(例如通过阵列410识别的数据流)内的地址比较匹配或命中。例如,具有在状况段434中储存的传播状态的特定数据流阵列410的需求请求地址段420中储存的值上的地址匹配可以是非传播命中。再次参考图4的表格350,地址X+1的第二次发生和地址X+3的第二和第三次发生对应于非传播命中。如果粘性储存比特为该特定数据流设定(有条件方框610),则方法600的控制流程移动到方框D。由于访问在先前已经预取的高速缓存行内数据上完成,因此在此情况下不需要预取请求。同样,粘性比特已经设定,因此不需要需求请求访问类型的检查。否则,如果粘性存储比特没有设定(有条件方框610),则方法600的控制流程移动到有条件方框608。这里,检查需求请求的访问类型。现在转到图8,示出处理器中继续有效高速缓存行预取的方法700的一个实施方案。与描述的每个方法相同,方法700可由本领域技术人员修改以便取得可替换实施方案。同样,在该实施方案中的步骤在相继顺序中示出。然而一些步骤可在与示出不同的顺序中发生,一些步骤可同时实行,一些步骤可与其他步骤结合,并且一些步骤可在另一实施方案中缺少。在示出的实施方案中,方法700的控制流程用通过在具有列队状态的数据流内的地址匹配达到的方框B开始。在一个实施方案中,如果需求请求具有高速缓存命中状况(有条件方框702),则在方框704中,具有地址匹配的数据流可具有更新的其置换策略。例如,对应于LRU算法的值可更新从而表示该数据流是最少使用的数据流。另外,数据流的状态可保持在列队状态而不是转变为另一状态。方法700的控制流程然后移动到方框C。在一个实施方案中,如果需求请求具有高速缓存未中状况(有条件方框702),则在方框706中,地址可在对应于地址匹配的数据流内储存为下个条目。条目数量计数器可在方框708中增量。该计数器可维持在该特定数据流中排队的条目的数量。该计数值可用来确定何时数据流状态应从列队状态转变为传播状态。在一个实施方案中,输送的需求请求的访问类型不需要检查,并且方法700的控制流程可从方框708移动到有条件方框710。在另一实施方案中,该访问类型可检查并且如果需求请求是储存操作,则可设定对应的粘性比特。在一个实施方案中,一旦该粘性比特设定,则其保持设定。这样的实施可以例如在据信数据流的列队状态中发生的储存操作安全预测储存操作可在数据流的较晚传播状态中发生时使用。如果条目数量计数器达到预定阈值(有条件方框710),则数据流状态更新。在方框712中,该状态从列队状态转变为传播状态。在方框714中,可确定预取参数。这些参数可包括增量值和预取深度。方法700的控制流程然后移动到方框E。如果条目数量计数器不达到预定阈值(有条件方框710),则然后方法700的控制流程移动到方框D。注意上述描述的实施方案可包括软件。在这样的实施方案中,实施方法和/或机制的程序指令可输送到或储存在计算机可读媒体上。配置为储存程序指令的许多类型媒体可用,并包括硬盘、软盘、CD-ROM、闪存存储器、可编程ROM (PROM)、随机访问存储器(RAM)和各种其他形式易失或非易失存储。另外,理解描述的计算系统可以是在任何合适设备,例如桌面计算机、膝上计算机、服务器、手持计算设备、机顶盒、路由器或其他设备中使用的处理器的部分。
尽管上述实施方案相当详细描述,但一旦完全理解上述公开,许多变化和修改对本领域技术人员将变得明显。旨在将下列权利要求解释为包括全部这样的变化和修改。
权利要求
1.一种计算系统,包括 预取单元,其中所述预取单元配置为 检测到给定数据流的访问,其中数据流对应于较低级存储器中的多个连续数据块; 响应于检测所述访问并确定到所述给定数据流的高速缓存未中的数量达到预定阈值; 响应于没有到所述给定数据流的访问,在没有写权限的情况下从较低级存储器预取所述给定数据流的一部分,所述给定数据流在高速缓存未中的所述数量达到所述预定阈值之后请求写权限;以及 响应于具有到所述给定数据流的访问,在具有写权限的情况下从较低级存储器预取所述给定数据流的所述部分,所述给定数据流在高速缓存未中的所述数量达到所述预定阈值之后请求写权限。
2.根据权利要求I所述的计算系统,其中来自较低级存储器的所述给定数据流的所述部分对应于一个或多个连续高速缓存行。
3.根据权利要求I所述的计算系统,其中响应于检测所述访问并确定到所述一个或多个数据流的所述给定数据流的高速缓存未中的数量达到预定阈值,所述预取单元还配置为 响应于确定所述访问请求写权限和所述访问导致高速缓存未中的所述数量达到所述预定阈值,在具有写权限的情况下从较低级存储器预取所述给定数据流的所述部分。
4.根据权利要求I所述的计算系统,其中所述预取单元还配置为确定所述访问的地址和初始预取高速缓存行的地址之间的整数增量值。
5.根据权利要求I所述的计算系统,其中所述预取单元还配置为储存对应于所述一个或多个数据流的特性化数据。
6.根据权利要求5所述的计算系统,其中对应于特定数据流的所述特性化数据包括下列中的至少一个数据流标识符(ID)、每个需求请求的读/写访问类型、每个需求请求的地址、需求请求的高速缓存命中/未中状况,以及对应于需求请求的初始预取地址。
7.根据权利要求5所述的计算系统,其中所述特性化数据储存在表格中,并且其中所述电路还配置为响应于检测到所述给定数据流的第一访问设定粘性储存比特,所述给定数据流在高速缓存未中的所述数量达到所述预定阈值之后请求写权限,其中一旦设定,则所述粘性储存比特在所述给定数据流数据在所述表格中具有有效条目时保持设定。
8.根据权利要求5所述的计算系统,其中所述特性化数据储存在表格中,并且其中所述预取单元还配置为响应于检测新数据流的高速缓存未中地址与所述表格中当前储存的数据流的地址并不邻近,在所述表格中分配所述新数据流。
9.一种方法,包括 检测到给定数据流的访问,其中数据流对应于较低级存储器中的多个连续数据块; 响应于检测所述访问并确定到所述一个或多个数据流的所述给定数据流的高速缓存未中的数量达到预定阈值; 响应于没有到所述给定数据流的访问,在没有写权限的情况下从较低级存储器预取所述给定数据流的一部分,所述给定数据流在高速缓存未中的所述数量达到所述预定阈值之后请求写权限;以及响应于具有到所述给定数据流的访问,在具有写权限的情况下从较低级存储器预取所述给定数据流的所述部分,所述给定数据流在高速缓存未中的所述数量达到所述预定阈值之后请求写权限。
10.根据权利要求9所述的方法,其中来自较低级存储器的所述给定数据流的所述部分对应于一个或多个连续高速缓存行。
11.根据权利要求9所述的方法,其中响应于检测所述访问并确定到所述一个或多个数据流的所述给定数据流的高速缓存未中的数量达到预定阈值,所述方法还包括 响应于确定所述访问请求写权限和所述访问导致高速缓存未中的所述数量达到所述预定阈值,在具有写权限的情况下从较低级存储器预取所述给定数据流的所述部分。
12.根据权利要求9所述的方法,还包括确定所述当前需求请求的地址和初始非邻近预取高速缓存行的地址之间的整数增量值。
13.根据权利要求9所述的方法,还包括储存对应于所述一个或多个数据流的特性化数据。
14.根据权利要求13所述的方法,其中对应于特定数据流的所述特性化数据包括下列中的至少一个数据流标识符(ID)、每个需求请求的读/写访问类型、每个需求请求的地址、需求请求的高速缓存命中/未中状况,以及对应于需求请求的初始预取地址。
15.根据权利要求13所述的方法,其中所述特性化数据储存在表格中,并且所述方法还包括响应于检测到所述给定数据流的第一访问设定粘性储存比特,所述给定数据流在高速缓存未中的所述数量达到所述预定阈值之后请求写权限,其中所述粘性储存比特一旦设定,则在所述给定数据流数据储存在所述阵列中时保持设定。
16.根据权利要求9所述的方法,还包括响应于检测对应的高速缓存未中地址与储存在现有数据流中的地址并不相邻,在存储中分配所述新数据流。
17.一种预取单元,包括 第一接口,其配置为耦合到高速缓存; 第二接口,其配置为耦合到较低级存储器; 控制电路,其中响应于检测到给定数据流的访问,所述数据流对应于所述较低级存储器中的多个连续数据块,并确定到所述一个或多个数据流的所述给定数据流的高速缓存未中的数量达到预定阈值,所述控制电路配置为 响应于没有到所述给定数据流的访问,在没有写权限的情况下从较低级存储器预取所述给定数据流的一部分,所述给定数据流在高速缓存未中的所述数量达到所述预定阈值之后请求写权限;以及 响应于具有到所述给定数据流的访问,在具有写权限的情况下从较低级存储器预取所述给定数据流的所述部分,所述给定数据流在高速缓存未中的所述数量达到所述预定阈值之后请求写权限。
18.根据权利要求17所述的预取单元,其中来自较低级存储器的所述给定数据流的所述部分对应于一个或多个连续高速缓存行。
19.根据权利要求17所述的预取单元,其中响应于检测所述访问并确定到所述一个或多个数据流的所述给定数据流的高速缓存未中的数量达到预定阈值,所述控制电路还配置为响应于确定所述访问请求写权限和所述访问导致高速缓存未中的所述数量达到所述预定阈值,在具有写权限的情况下从较低级存储器预取所述给定数据流的所述部分。
20.根据权利要求17所述的预取单元,还包括表格,所述表格包括多个条目,其中每个条目都配置为储存对应于特定数据流的特性化数据,并且其中对应于特定数据流的所述特性化数据包括下列中的至少一个数据流标识符(ID)、每个需求请求的读/写访问类型、每个需求请求的地址、需求请求的高速缓存命中/未中状况,以及对应于需求请求的初始预取地址。
全文摘要
本发明提供一种用于有效数据预取的系统和方法。储存在较低级存储器中的数据流包括在计算机程序中使用的连续数据块。处理器中的预取单元通过识别以单调增或减方式定位连续数据块的存储访问序列来检测数据流。在给定数据流的预定列队时期后,预取单元响应于没有请求写权限的访问,在没有写权限的情况下从存储器预取给定数据流的一部分。同样,在列队时期后,预取单元响应于确定具有到给定数据流的先前访问,在具有写权限的情况下从较低级存储器预取给定数据流的一部分,该给定数据流在高速缓存未中的数量达到预定阈值之后请求写权限。
文档编号G06F12/08GK102640124SQ201080051152
公开日2012年8月15日 申请日期2010年9月9日 优先权日2009年9月11日
发明者巴拉特·纳拉辛哈·斯瓦米, 斯瓦米·帕亚穆尔图拉, 本杰明·T·桑德 申请人:超威半导体公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1