多核片上系统中的缓存策略的制作方法

文档序号:16247346发布日期:2018-12-11 23:42阅读:221来源:国知局
多核片上系统中的缓存策略的制作方法

本说明书涉及并行处理环境中的计算。

背景技术

fpga(现场可编程门阵列)和asic(专用集成电路)是用于实现定制化逻辑电路的两种示例性的方式。与asic相关联的成本包括验证、物理设计、时序收敛和非经常性成本。不同于asic,fpga是可重新编程的,原因在于其可针对每种应用而被重新配置,并且即使在设计已发货给客户之后也可以改变,很像软件可以进行更新那样。然而,fpga通常比asic更昂贵。相比于asic,fpga通常消耗更多的功率并且具有更低的性能。

多核系统(例如,分片式处理器(tiledprocessor))或多核片上系统(multicoresystemonachip,soc)使用并行处理来实现asic和fpga两者的一些特征。例如,一些多核系统由于其针对一些功能使用定制逻辑而像asic那样功率高效,并且由于其能够以软件编程而像fpga那样可重新配置。

多核系统包括缓存存储器和缓存控制器单元。缓存可以是多级的,通常是两级或三级,并且缓存可以是分布式的且可以关联于多核系统的核。已知若干种类型的缓存。一种类型是直接缓存,而另一种类型是组关联缓存。组关联缓存是多通路直接映射缓存(multi-way-direct-mappedcache),其具有以相同方式寻址的、被称为组(set)的多个相同的直接映射缓存。对于每个条目,有一组缓存行可用于存储。

已知若干种类型的替换策略。一种类型是fifo(先进先出,firstinfirstout)而不考虑访问数据的频率或频度。另一类型是lifo(后进先出,lastinfirstout),其行为与fifo相反。另一策略是mru(最近最频繁使用,mostrecentlyused),其首先替换最近最频繁使用的项。又一策略是随机替换(randomreplacement,rr),其在有必要在缓存中进行分配时随机选择候选项丢弃。

常用于诸如组关联缓存之类缓存的一种替换策略算法是最近最少使用(leastrecentlyused,lru)策略。lru策略通过替换最近最少访问的缓存行来选择要在分配新缓存行(即,缓存块)时逐出的牺牲者通路(victimway)。

一些缓存实现方案还使用每行锁定位(lockbitperline)来明确地保护某行免于被逐出。锁定位的静态性质可降低缓存关联性,并且在极端情况下从整个组完全消除新的分配。此外,使用各种算法来决定最后一级缓存(thelastlevelcache)中的分配,从而绕过缓存和透写缓存——其各自优化不同的场景并针对不同的目标,诸如增加高命中,使有用数据的抖动最小化,避免后期脏回写等。



技术实现要素:

在soc中,到达最后一级缓存(最靠近主存储器的缓存)的内部请求中的很大一部分是来自无较低缓存级的io设备。由于这些内部请求而需要的聚合io带宽往往可能超过外部存储器带宽。处理器具有l1数据缓存和l1指令缓存,并且通常还具有l2统一缓存,这将会过滤掉由处理器产生的发往llc的大部分流量。因此,在许多情况下,针对l1和l2缓存读取未命中访问在最后一级缓存(lastlevelcache,llc)中分配来自处理器的缓存行是不期望的(因为这样可能会使llc中的有用数据抖动),而缓存行可以被分配于统一l2缓存或核的l1缓存中。

对于使用lru替换策略的组关联缓存,新分配的块将会导致逐出最近最少使用条目(在此称为lru位置0)以及将新分配的块分配成最近最频繁使用(mostrecentlyused,mru),在此称为lru位置k-1,其中k是组关联性。常规lru分配是固定决策,其假设对新分配的块的访问是短时间内最有可能被再次访问的。这样的假设对于一些访问模式是不正确的。优化的分配决策可能优选地基于其他准则而将新块放置在不同位置或者不分配新块。

高带宽联网系统对标准缓存实现方案引入了一些挑战。一些类型的数据流量(即,访问)模式在联网应用上产生高事务处理率,这在使用无判别分配策略以及标准最近最少使用(leastrecentlyused,lru)缓存替换策略的情况下工作效率低下。

一种这样的流量模式是高速率流式i/o,其中缺乏可用缓存分配会消耗比可用于该流量模式的dram带宽更高的可用dram带宽。高速率是指相对于dram带宽和/或相对于由计算节点生成的带宽的速率(因为给定的计算节点将会具有较低级缓存来过滤在最后一级缓存处所见的大部分生成的带宽)。

表征网络流量的第二流量模式是由诸如分类查找或原子操作等事务产生的,对短数据结构(“短”是相对于缓存块的大小而言,即,小于给定的实现方案的缓存块的大小)的高速率随机访问(造成过多缓存未命中的、对无本地化的数据的访问)。

描述了一种使用经修改最近最少使用方案和缓存标签中的附加状态位的动态自适应最后一级缓存填充策略。该缓存策略提供了基于经修改lru替换算法、随机概率以及由实现每一缓存块的有限状态机的状态位提供的附加状态的分配准则的新方法。这些元素的组合被编程于在事务层选定的访问配置文件中,并且可以针对某些流量模式解决与标准缓存lru策略相关的问题。

根据一个方面,一种在多核系统中的最后一级缓存中实现自适应最后一级分配策略的方法包括:接收具有用于分配成新缓存块以供在所述缓存中存储的流类型的流;根据最近最少使用分配类型并且基于新缓存块的缓存行动、状态位和流类型,访问来自定义分配行动的多个访问配置文件的选定的访问配置文件;以及针对所述缓存中选定的最近最少使用(lru)位置,根据所述选定的访问配置文件分配新流。

其他方面包括设备、系统和有形地储存在诸如易失性存储器和非易失性存储器以及持久存储设备/系统等计算机可读非暂时性存储设备上的计算机程序产品。

从以下描述并且从权利要求中,本发明的其他特征和优点将会变得显而易见。

附图说明

图1a是分片式集成电路的框图。

图1b是分片(tile)的框图。

图2是组关联缓存存储器布局的示意图。

图3是广义自适应lru策略的流程图。

图4是缓存未命中事件处理的流程图。

图5是缓存命中事件处理的流程图。

图6是缓存配置文件的图解视图。

具体实施方式

1.示例性系统总览

本章节(参考图1a和图b)中描述的系统提供了可用于其他章节中所述多种技术的并行处理环境的各个方面的总览。

多核处理器可以制造成含有多个处理引擎或核的芯片。使用多个核来处理应用可以提供更大的计算吞吐量并且还提供更低的功率。构建多核处理器存在许多挑战。这些挑战包括如何高效地将核彼此相连,如何管理核之间的数据共享,如何以一致的方式从输入-输出设备向核供应数据,以及如何构建用于多核处理器的操作系统等挑战。基于总线的多核芯片使用总线来连接核,但总线可能是吞吐量瓶颈并且还可能消耗大量功率。一种连接核的替代方式是使用点对点网络,诸如网状网络或环形网络。诸如网状网络等网络具有布置成网格图案的开关,其中相邻开关彼此连接。当核包含用于诸如网状网络等网络的开关组件时,核能够以简单的矩形平铺图案来布局。这样的多核芯片称为分片式多核处理器。由于在分片式多核处理器中导体路径较短,因此当相邻的核需要通信时信号可以传播较短的距离。分片式多核处理器一般消耗比基于总线的多核处理器更低的功率。

参考图1a,集成电路10(或“芯片”)包括互连分片14的阵列12。分片14中的每一个都是功能单元,其包括处理器(或“处理器核”)和开关,所述开关将来自其他分片的数据转发到处理器以及通过数据路径16转发到其他分片的开关。开关耦合到处理器,从而可以通过由开关和数据路径形成的通信结构向其他分片的处理器发送或从其他分片的处理器接收数据。集成电路10包括其他片上电路,诸如输入/输出(i/o)接口电路以便耦合电路10内外的数据,以及时钟分配电路以便向分片的处理器提供时钟信号。

图1a中所示的集成电路10包括(例如,矩形)分片14的二维阵列12,以及相邻分片之间的数据路径16从而形成网状网络。任何两个分片之间的数据路径16可以包括多个导体路径(或“导线”)以支持每个方向上的并行通道。可选地,两个分片之间的特定的导体组可以专用于可独立操作的不同网状网络。

备选的网络配置包括总线、环、纵横、超立方体、树或者具有延伸到对角线邻居或位于多个行或列之外的分片的路径的网络。其他配置包括更高维网状拓扑。例如,可以使用多层集成电路或其他三维配置来形成网络,在其中连接形成网络节点的立方体。在一些实现方案中,耦合到处理器的开关向和从该处理器或者通过诸如环形网络等一维互连网络的数据路径在相邻处理器之间转发数据。

例如,来自位于网络边缘的一个或多个分片的数据路径16可以耦合出分片14的阵列12(例如,通过i/o引脚)到达片上器件18a、片外器件18b或者通信通道接口18c。一个或多个并行通道的多个导体可被多路复用到数目较少的引脚或串行通道接口。例如,可以将一个或多个通道的导体多路复用到高速串行链路(例如,serdes)或存储器控制器接口(例如,ddr或动态ram(亦称为dram)的存储器控制器)上。存储器控制器可以片外实现,或者实现在集成电路10的分片内或外围上的逻辑块中。

以下示例性实现方案是在具有相同结构和功能性的分片的上下文中描述的。备选地,可以存在多种“分片类型”,每一种具有不同的结构和/或功能性。例如,将数据耦合出集成电路10的分片可以包括用于i/o功能的附加电路。

参考图1b,分片14包括处理器20、开关22以及传入导体16a和传出导体16b的集合,所述传入导体16a和传出导体16b的集合形成用于与相邻分片通信的数据路径16。处理器20包括程序计数器24、指令存储器28、数据存储器30和流水线34。处理器20可以使用多种流水线架构中的任何一种。流水线34包括流水线寄存器、功能单元诸如一个或多个算术逻辑单元(alu)以及临时存储诸如寄存器文件。流水线34中的级例如包括指令提取和解码级、寄存器提取级、指令执行级和回写级。

指令存储器28和数据存储器30中的任一个或全部两者可被配置用于作为片下存储器的缓存进行操作。缓存层次结构可以采取许多形式,而这里的描述只是一个示例。例如,指令存储器28包括对指令进行缓存的指令缓存(其可以是1级指令缓存(l1i)),而数据存储器30包括对数据进行缓存的数据缓存(其可以是1级数据缓存(l1d))。l1i缓存和l1d缓存两者可由2级统一缓存(l2u)所支持,所述2级统一缓存通常在大小上比所述l1缓存中的任一个都更大。缓存可由缓存控制器来控制。

在来自l1i缓存或l1d缓存的缓存未命中的情况下,检查l2u缓存。如果在l2u缓存中找到数据,则可以避免缓存未命中。如果未在l2u中找到指令或数据,则从分片之外提取指令或数据。通常,处理器检查被称为未命中的该特定地址的归属分片的另一分片中的缓存。在一些实现方案中,其他分片中的l2u缓存充当大型分布式l3缓存。l3缓存可以是最后一级缓存,即,使用一个或多个主存储器控制器与外部存储器通信的缓存。

在其他实现方案中,在归属分片中存在目录并且在通向存储器控制器的路径上存在统一l3缓存。如果归属分片目录具有数据项(位于归属分片中的归属缓存的归属位置内)的条目,则归属分片目录可以发信号通知数据项的拥有者以将数据项发送到请求分片。如果甚至归属分片目录都导致缓存未命中,则作为示例,归属分片目录通过向外部存储器(通常向dram,有可能通过l3缓存)发送缓存请求并从外部存储器获得数据项来处理缓存未命中。来自请求分片的缓存未命中被变成穿越网络以到达归属分片的消息。类似地,从归属分片到dram的未命中穿越网络。

有时,在对分片内的缓存的缓存未命中的情况下,直接在芯片外向外部dram存储器发送请求,而不是检查归属分片目录。

分片14还可以包括执行行动以确保在整个芯片中保持缓存一致性的缓存控制器。通常,将给定的缓存行的缓存一致性信息保存在该缓存行的归属分片处。一致性信息被储存在用以储存缓存行的当前状态的目录中。还可以通过对缓存行地址进行哈希以产生归属位置来确定归属分片内针对给定缓存行的归属位置。还可以在程序执行时修改归属位置。具有特定归属分片的归属缓存中的归属位置的数据被称为“归属于”该特定分片。

处理器20可以是多线程的,并且/或者具有超长指令字(verylonginstructionword,vliw)处理器、超标量处理器或向量处理器的能力。

多核芯片中的开关22一起提供用于所有核的通信基础架构。可以按许多方式构建开关。作为一个示例,开关22包括输入缓冲器26用以临时储存通过传入导体16a到达的数据,以及开关电路38(例如,纵横结构)用以向传出导体16b或处理器20转发数据。输入缓冲提供了流水线数据通道,在其中数据在预定数目的时钟周期(例如,单个时钟周期)中穿越从一个分片到相邻分片的数据路径16。这样的流水线数据传输使得集成电路10能够扩展到大量分片而无需限制时钟速率以将诸如传播延迟或电容等由于导体长度造成的效应纳入考虑。(备选地,缓冲可以是在开关电路38的输出处,替代于或附加于输入处)。

开关提供针对由缓存未命中或其他缓存一致性相关事务造成的通信消息的“动态路由”。在动态路由中,开关22中的电路基于在执行期间被动态路由的数据中的报头信息来确定要连接哪些输入端口和输出端口。分片可以通过在消息报头中生成合适的地址信息向任何其他分片发送消息。沿着源分片与目的地分片之间的路线的分片使用预定的路由方法。例如,一种路由方法是最短曼哈顿路由(manhattanrouting)(亦称为维序路由),意指沿着第一维度并于随后沿着第二垂直维度进行路由(其中通过添加布置成网格状图案的线段来度量两个点之间的距离,线段彼此成直角,并且不是连结所述两个点的直线)。沿着路线的跳跃的数目是确定性的,但时延取决于沿着路线的每个分片处的拥塞。通常将会使用动态路由的数据流量的示例为存储器访问流量(例如,用以处理缓存未命中)或中断消息。

开关22包括用于实现动态路由的专用电路。每个分片具有一组数据路径、缓冲器以及用于动态路由的开关电路,从而形成分片的“动态网络”。还可能存在独立操作的多个静态网络和多个动态网络。例如,可以将动态网络中之一保留为用于处理分片存储器之间以及发往/来自片上或片外存储器的流量的存储器网络。可以保留另一网络用于与“监控状态”相关联的数据,其中为监控者实体保留某些行动或资源。

开关22通过处理器耦合导线36耦合到处理器20。为了改善动态路由开关的时延,分片可以在开关中使用路线预测。利用路线预测,基于预测端口号将进入开关的输入端口的消息路由到开关的给定目的地端口。针对来自给定输入端口的分组的预测可以基于由来自该输入端口的前一分组采取的路线来选择。如果分片中的硬件(例如,预测电路)确定预测不正确,则该硬件可以花费几个额外周期来基于分组报头中的信息作出正确的路由决策。

其他优化包括使用宽网络通道。分片可以发送同时包含分组报头和数据值的单字消息。分组报头包含诸如路线信息等信息。

分片14可以包括各种类型的存储器模块来充当指令存储器28、数据存储器30,或者充当用于诸如分片的控制信息等其他类型信息的本地存储器存储。除了大型sram体之外,在每个分片中可以存在小型sram体。在每个分片中还可以存在大型dram体。每个分片可以具有模式指示器,用以在这些存储体之间进行选择。所述存储器模块中的任何模块均可被视为分片14或集成电路10之外的更大存储器存储的缓存。这样的外部存储器(例如,dram)可通过一个或多个动态网络的高带宽路径来访问。可以选择存储器的量以大致均衡专用于处理和存储器的区域,以及匹配存储器访问时间与处理器时钟。

通过硬件和软件(例如,处理器指令)的任何组合可以实现诸如虚拟地址转换、缓存、全局共享存储器和存储器保护等功能。分片14可以包括转换后备缓冲器(translationlookasidebuffer,tlb),用以在虚拟地址从每个分片14上的处理器20传出时对其进行转换。还可以使用针对指令和数据的单独的tlb。各自的模式位可以关闭转换。诸如缓存未命中或转换错误等事件可以触发通向处理器20的陷阱(trap)或中断,以使得处理器20能够以软件(使用由处理器执行的指令)处理该事件。

运行在处理器20上的软件还可以使用各种机制来加快tlb未命中处理。例如,软件tlb未命中处理程序也可以保存tlb条目的软件缓存。由软件tlb未命中处理程序使用的这样的软件缓存亦称为tsb。

例如,可以存在通向处理器20的多个陷阱线(承载陷阱信号的导体)。备选地,可以存在很少的陷阱线,但存在可供处理器20访问的陷阱向量,该陷阱向量对发生的陷阱类型进行编码。存在模式指示器,其可以允许选择是由软件或是硬件来处理这些事件。硬件缓存标签文件可以将命中/未命中状态导出到软件,而不是拖延处理器流水线。

分片14的阵列12可以包括耦合到阵列的外围上的开关的一个或多个接口模块,用以向和从诸如i/o设备等外部设备传输数据。接口模块包括用以在动态网络的通信协议与外部设备的通信协议之间中介的电路。接口模块能够连接到分片上的动态网络切换点中任一个的端口,但任何给定的接口模块仅可以通过切换点的子集连接到动态网络的子集。

分片14中的电路的配置可通过分片中储存的本地控制信息来控制。例如,可以基于储存在寄存器或其他存储器存储中的“模式指示器”(例如,一个或多个位)的状态来开启或关闭(例如,以便节省功率)分片中的模块或将其配置成多种模式(例如,以便设置保护级别)。

还可以选择性地关闭多核芯片的各种部件,例如,分片、分片中的处理器、分片中的处理器和缓存,以便节省功率。当这样做时,系统负责选择性地关闭或激活系统的其他部件操作所需的分片的某些部件。例如,如果分片的缓存是给定的一组缓存行的归属缓存,则该分片的缓存控制器和缓存可以通电。备选地,它们可以在其断电之前采取一组行动。这些行动可以将处理责任转移到芯片的其他部件。

由于流量的线路速率不断上升,往往不可能完全以软件及时执行所有请求的应用。对于这样的情况,处理器20可以包括加速器电路来加快对于诸如安全、压缩、网络分组处理等特殊功能的处理。加速器电路(加速器)可以直接连接到分片或核,或者其可以连接到互连网络的外围(例如,像i/o设备那样)。加速器还可以是一致性协议的完全参与者,并且可以包含缓存。其还可以使用缓存一致性传输而在其以及其他核之间传输数据,或者其可以使用dma(直接存储器访问)而从芯片的其余部分上的缓存向加速器存储器或缓存传输数据。

用于分片式集成电路10的软件系统包括编译器,该编译器能够调度针对每个核中的处理器的指令。

用于集成电路10的示例性操作系统(os)可以包括运行于单个分片14上的类linux内核或类似的内核。os可以是能够运行于一个或多个分片上的对称多处理os,诸如smplinux。运行于多个分片上的smplinux的线程通过一致性共享存储器彼此通信。备选地,os可以是运行于多个分片上的,向每个分片上的处理器发送消息的分布式os。

可以包含的另一软件系统组件是管理程序层,其提供用于每个物理设备的物理设备驱动程序。管理程序还设置硬件中的保护级别。管理程序负责对物理硬件和物理设备上的各个操作系统进行多路复用。

应用编写者可以使用诸如c等语言对多核芯片中的核或分片中的每一个进行编程。类似地,其可以通过使用诸如并行线程(pthread)、消息传递接口(messagepassinginterface,mpi)等库或诸如openmp等并行语言编写并行程序来对多个分片进行编程。

软件系统还可以包括这样的库:其提供允许用户直接访问诸如与网络相关的寄存器、专用寄存器、同步操作、用户级消息传递等各种硬件特征的附加功能,诸如接口。

可以对多核处理器系统的分布式缓存一致环境作出各种性能增强。核(或分片)中包含的缓存连同关联的缓存控制器形成用于从任何核到外部存储器的存储器引用的较大的共享缓存系统。换言之,系统中所有缓存(例如,2级缓存)的联合充当更高级的统一缓存(例如,3级缓存)。缓存控制器处理缓存访问,并且在不同的核的缓存之间保持一致性。应用用于较大的共享缓存系统的时延减少技术以进一步优化存储器操作性能。若干特征还使运行于核的处理器上的软件能够控制来自处理器和i/o系统的缓存分区和利用,而同时保持一致性。

2.使用经修改lru方案和缓存标签中的附加状态位来实现动态自适应最后一级缓存填充策略

下面描述根据针对选定的lru位置的访问配置文件来分配新块的分配策略。该分配策略特别地根据附加状态信息来实现在读取未命中或写入未命中事件时在任何lru位置进行分配以及在读取命中事件或写入命中事件时将lru位置升级达选定的偏移量。这样的分配策略为组关联缓存提供了高效的过滤和学习机制,原因在于首先在任何选定的lru位置分配新块或缓存行(同义),这避免了使较高lru位置处的重要缓存数据降级并使抖动最小化,而后续在额外的读取命中或写入命中的情况下更新lru位置,提高被频繁访问搜索结构的保护级别,并使向dram体发送的过多访问请求减到最少。通过使用分配缓存中的新行的选定的概率可以应用免受抖动的进一步保护。

与标准lru替换策略相比,使用这样的经修改lru方案的最后一级缓存填充策略当与根据状态位的状态(清除或设置)而修改替换方案的状态位以及根据各种缓存场景的替换相结合时,提供了每行的灵活状态机,用于在缓存未命中场景中对缓存行的动态保护或者在缓存命中场景中在lru替代项之间的选择。因此,状态位的使用选择对来自最低lru位置的缓存抖动加以限制的替换策略。此外,状态位的使用通过考虑状态位的状态而不是考虑单个时钟周期中牺牲者通路的整组锁定而改善了电路实现和时序。状态位用作读取命中场景或写入命中场景的决策修改符,并且可以根据事务前配置文件来选择任何期望的策略。

经修改分配策略可以通过使用响应于可编程随机概率而重置的状态位来防止静态锁使不同的缓存通路匮乏。当lru0位置由设置的状态位占据时,通过使用状态位而消除了缓存分配,并且通过根据可编程概率重置状态位而可以在未来再次对其加以允许。亦即,按一定的编程概率。用以提供编程概率的准则是soc设置调整,状态位被重置并且静态锁的任何不利影响得以减到最小。此外,组中的多个通路可以是要替代于已断言了状态位但由于时序考虑而未寻址的lru位置0(lru0)中的通路而逐出的可能的候选者。时序考虑是指在单个时钟周期中电路必须从多个选项中确定哪个通路是牺牲者lru通路。然而,当仅lru0通路为牺牲者时,避免了这样的考虑并且因此改善了时序。如果除了选择lru位置以插入新的分配之外将具有状态位的多个通路考虑成牺牲者,则所产生的电路设计十分复杂。

该机制提供lru位置的旋转,其中将设置了状态位的lru0位置升级到位置k-1,并将更高lru位置1至k-1分别降级一个位置到k-2至0。已处于lru位置0中的下一行被暴露并且该行的状态位被观察到,从而使下一次的lru位置0牺牲者候选者提供另一通路的状态位。除了清除状态位的低概率之外,该机制在寻找下一牺牲者(下一要逐出的缓存行)中提供了快速响应而无需状态位保护。状态位可以防止静态锁使组匮乏,或者提供lru位置的旋转。亦即,清除状态位以从lru位置0中的通路移除保护或者除此以外通过将通路升级到lru位置k-1并暴露另一通路的状态位来旋转所述通路都存在概率,从而使组不会被恰好处于lru0位置的单个缓存通路的状态位完全阻塞。

现参考图2,图中示出多通路(例如,16通路)组关联缓存50,其具有多个通路51a和组51b用于缓存行51c的存储。为了本文讨论的目的,缓存50被用作最后一级缓存,即,最靠近存储器的级,例如,l3。如图所示,缓存50具有包含在标签54中的完整的常规lru位52。包含的所谓“完整lru位”是与用于多通路组关联缓存的常规lru策略一起使用的常规lru位52。多通路组关联最后一级缓存中的标签54还包括附加位56,该附加位56与常规lru位52相结合作为缓存标签的一部分。该附加位在此称为“状态位”。图2还示出标签比较电路59,其将标签信息和来自地址58的msb与缓存50中使用的确定的策略进行比较。

状态位56与使用完整lru位52的常规lru缓存替换策略相结合。此外,对于每一事务,提供配置文件编号,用于作为读取/写入、命中/未命中以及在命中情况下设置的或清除的状态位的函数而选择要应用的替换或分配策略。lru位52和状态位56的组合提供了每缓存行的灵活状态机,该状态机可以用于在缓存未命中场景中的动态保护或者在缓存命中场景中在lru替代项之间的选择。这样的经修改lru策略(参见图3和图4)实现在缓存未命中情况下在任何选定位置进行分配或者根本不分配(而常规lru策略仅在顶部位置处进行分配)。此外,这样的经修改lru策略实现在缓存命中情况下上移或下移一个位置到相对于当前lru位置的任何lru位置,包括解除分配(而常规lru策略将通路移动回到顶部位置)。在常规lru策略中顶部位置是指向当前lru位置添加有符号数(signednumber),其可以是正升级到顶部位置或负降级到底部位置。

附加的状态位56与可编程随机概率一起调整经修改lru策略,并从而提供长期学习以使得最重要的数据保持被缓存,并且针对具有不同流量模式的各种类型的数据流使得dram访问减到最少。附加的配置文件可编程决策可以根据选定的可编程概率而在经修改lru配置的两个选项之间选择。

一种这样的流量模式是高速率流式i/o(其中“高”是相对于系统容量,特别是dram带宽而言),其中缺乏可用缓存会消耗比可用于该流量模式的dram带宽更高的dram带宽。流式数据的寿命(lifetime)是指两个间隔。第一间隔从数据被写入到存储器的时间直到该数据被使用一次(例如,从存储器读取),在此之后系统不再需要该数据。第二间隔是从数据被从存储器读取以及随后其被重复用于额外的流量负载和再次写入到存储器(假设动态存储器分配)的存储器释放和重新分配的时间。在系统层面上,数据可能已经储存在动态分配的缓冲器地址中,该缓冲器地址在读取之后被释放,并且稍后缓冲器中的空间被重新分配以供其他数据使用。从同一缓冲器地址的释放到新的分配的时间间隔是上文提到的时间间隔。

当dram带宽是高性能的限制者时,最后一级缓存(lastlevelcache,llc)例如l3缓存必须分配行以用于流量负载和关联的上下文,并且负载大小乘以寿命的乘积可能超过共享的最后一级缓存容量。

就标准lru实现方案而言,这样的实现方案将会由于第一间隔(在写入数据之后,但在读取数据之前)中的数据抖动而接近零命中率。这是一种公知的雪崩现象。针对这个问题的常规解决方案是根本不对流式数据进行缓存(导致dram接口上的全部带宽用于这样的流式数据)。

本文所述的技术通过保持未读数据不被逐出并选择性地使新的传入流式数据溢出到外部存储器而实现流式数据的缓存并提供显著避免雪崩现象的机制。这些技术导致与在全寿命期间储存流式数据所需的容量相比,实现与缓存容量成正比的流式数据的命中率。例如,如果1mb缓存需要储存1.5mb的流式数据,则该1mb缓存应当实现66%的命中率而不是接近0%。

表征网络流量的第二流量模式是由诸如分类查找或原子操作等事务产生的,对短数据结构(“短”是相对于缓存块的大小而言,即,小于给定的实现方案的缓存块的大小)的高速率随机访问(“高”是到达缓存的总体请求中的主导因素)。

考虑当被访问的表的数据库远大于缓存并且访问模式完全随机时,标准lru缓存将会不断丢弃旧数据和分配新数据,但却不再次使用所述新数据,这潜在地浪费dram带宽,例如,只为了读取短数据结构就对完整缓存块的带宽进行两次使用(即,逐出旧的脏行和分配新的干净行)。

在这样的情况下,少数搜索结构可能得到频繁访问并且需要进行缓存(即,尽管结构大小小于缓存行,也被分配完整的缓存行),而得到随机访问的大多数其他搜索结构在任何情况下都很少会在被逐出之前针对第二次读取而命中缓存。具有无判别分配的常规lru实现方案将会导致高缓存抖动和低命中率。然而,通过选择不使用这样的lru实现方案来进行分配,这样的流导致对同一dram体的零命中率以及可能的高访问模式,从而由于dram电气约束而造成低性能。通过使用随机概率来进行分配以及在读取未命中事件时选择相对较低的lru位置来分配这样的事务,保护有价值的缓存数据免于因来自较早访问的地址的读取事务而遭受抖动。另外,通过在读取命中事件时升级缓存位置,仅在频繁使用的地址在被逐出之前从初始分配的时间起再次得到访问的情况下保护这些地址。此外,当具有较低级缓存的处理器产生读取未命中时,优选不在最后一级缓存中为其分配条目。

其他流量模式包括标准程序指令、标准程序数据、受控加速链接,例如,加速器数据在有分配和保护的情况下被显式地从外部存储器读取到缓存,加速器中间结果升级lru位置,并且加速器链最终结果被显式地写入到外部存储器而不会在写入未命中情况下在缓存中分配(以防止重要数据抖动)或者在写入命中情况下降级。

下面描述经修改lru方案,其为基于配置文件的分配,具有针对数据流量模式的诸如读取未命中、写入未命中、读取命中和写入命中等行动定义的策略。这样的基于配置文件的分配策略还可以选择透写行为(例如,通常针对特殊用例,例如向持久非易失性存储/存储器进行储存),其中向缓存中写入的经修改数据同时被写入到主存储器位置,从而通过始终更新dram(存储器),存储器具有经修改缓存行的当前版本,以及通过具有缓存行的当前版本而使缓存中的缓存行保持处于干净状态(例如,不脏或从主存储器改变)。

参考图3,用于使用soc(诸如上文所讨论的多核系统中)的最后缓存级分配策略60的实现方案包括接收62新块用于分配以供在llc缓存中的存储。根据因子63(例如,最近最少使用分配类型,并且基于缓存行动、状态位以及流量模式)确定64配置文件的选择,以及根据针对缓存中的选定lru位置的选定的访问配置文件来处理该新块。策略访问66来自定义分配行动的多个存储的65访问配置文件的选定的访问配置文件。所述技术根据数据流量模式类型来选择68替换策略,其中一种数据流量模式类型例如为高速率流式io数据,而另一数据流量模式类型为对短数据结构的高速率随机访问,而又一数据流量模式类型为程序相关数据或指令缓存未命中。

未命中事件

现参考图4,图中示出针对未命中事件的示例性处理70。针对未命中事件,发生以下行动,并且每个配置文件单独提供读取或写入的可编程分配决策。缓存控制器执行经修改lru策略70,访问72对应的配置文件。

执行经修改lru策略70的缓存控制器确定是要绕过还是要分配编程的lru位置,以及在分配的情况下是要设置还是要清除状态位。经修改lru策略针对这样的决策使用随机概率。

在分配的情况下,经修改lru策略根据对应的配置文件在所分配的缓存行标签中设置(或不设置)74状态位56。因此,经修改lru策略在提供是要分配缓存行还是要针对缓存行绕过缓存的决策80时根据对应的配置文件考虑或忽略76lru0中的状态位56。

在不作出分配(例如,绕过)的情况下,使用随机编程的概率来清除82lru0位置的状态位56,这意味着设置位的清除是随机进行的,以便不向清除决策提供任何统计偏差。在未清除lru位置0中的状态位56的情况下,经修改lru策略将lru0从位置0旋转84到位置k-1(其中k小于或等于通路数目n)中选定的一个位置,并且在下一次将lru1降级86到位置lru0(即,通过暴露新的候选者牺牲者缓存行,下一次该组由另一事务寻址以防止使该组匮乏)。

命中事件

现参考图5,图中示出针对命中事件的示例性处理90。在命中事件的情况下,发生以下行动,并且所述行动可针对读取事件或写入事件单独配置。缓存控制器访问配置文件92并选择行为94。

经修改lru策略通过向lru位置添加有符号偏移值而向lru位置施加偏移值96。有符号偏移值可以提升或降低或不改变组关联缓存中的命中通路的lru位置。lru位置与最大位置处的有符号偏移之和被截断以对应于顶部lru位置(如常规lru策略中那样),但最小位置将会是lru0。

经修改lru策略确定98是否要设置、清除还是不影响命中缓存行中的状态位56。策略基于状态位的值以及基于状态位的先前值选定的配置文件来对此作出确定,这提供了基于先前值/下一值的组合的、对设置/清除/保持的完全控制。可以针对这样的决策使用随机概率,以便在小于100%的情况中应用所述策略,或者按给定的概率在编程的策略之间进行选择。例如,在搜索查找的情况下,可以决定按一个概率在某一lru位置分配以及否则不分配,这意味着lru位置为负。类似地,在命中的情况下,可以决定以某一概率清除下一状态位并添加一个值,或者设置下一状态位并向lru位置添加另一值。随机概率实现了对统计行为的更好的控制。

经修改lru策略使用99状态位56来决定是要将lru位置改变达有符号偏移量还是保持lru位置不变。

缓存配置文件的选择是基于随事务提供的字段作出的。该字段指示出针对特定事务要使用哪个可编程配置文件。通常,该字段将会用差异化特性标记数据流,该差异化特性可由耦合到集成电路10或互连分片14的阵列12的设备基于标识选定的流而提示。例如,通过标识经过连接(pcie(pci特别兴趣小组)事务层分组(tlp)处理提示)的流。缓存配置文件的选择还可以由较低缓存事件提示,诸如软件发起的缓存行逐出(这将会避免分配)、发源于目录的逐出(这将会分配成牺牲者缓存)、针对存储器范围的可编程行为,以及其他准则。其他准则例如可以基于链接操作中的加速器的某些类型,其可以在中间操作中进行分配和保护,以及绕过来自最后一个加速器的分配,原因在于在相对较长的时间段中(相比于其他潜在分配)最终数据将不会被访问并且因此不应当丢弃其他有用数据。

现参考图6,针对两个示例——流式数据(例如,高速率流式io)和网络流量(例如,对短数据结构的高速率随机访问)——示出了缓存配置文件102、104。

流式数据缓存配置文件的示例

对于这些缓存配置文件,用于对缓存进行配置以处理通常被写入一次并于随后在长时延(寿命)之后被读取一次的流式数据的一组示例行动如下:

在写入未命中时,当lru0状态位56为清除时,策略在选定的位置进行分配并在新分配的行上设置状态位56,并且lru0通路被逐出。

在写入命中时,策略升级lru位置并且设置状态位56。

在读取未命中时,策略不分配缓存中的位置。

在读取命中时,策略降级或不改变当前lru位置并且清除状态位。

短结构缓存配置文件的示例

对于这些缓存配置文件,用于配置缓存策略以处理来自庞大的表的短(例如,搜索)结构(其中搜索结构具有应当保存在缓存中的一小部分频繁访问的地址,而大部分随机地址应当绕过缓存以防止抖动)的一组示例行动如下:

在写入未命中时,在lru0中进行分配(如果是部分的,则与dram数据合并),清除状态位56,在此优选不在写入未命中时分配,其中在lru0中的写入未命中分配是搜索表的不频繁更新。

在写入命中时,不改变lru位置,并且清除状态位56。

在读取未命中时,如果在位置lru0上设置了状态位则不进行分配。这将会致使可编程概率清除状态位56或者如果状态位56已被清除则导致lru位置的旋转或在lru位置0处进行分配。

在读取命中时,升级lru位置达可编程量,并且清除状态位。

这些是由经修改lru方案(缓存替换)策略访问的配置文件,其中这些配置文件定义了根据指定数据流量模式针对读取未命中、写入未命中、读取命中和写入命中的策略。

以下的表更全面地描述编程每个配置文件的灵活性。所述表如下:

表1读取未命中

表2写入未命中

表3读取命中,其中状态=0

表4写入命中,其中状态=0

表5读取命中,其中状态=1

表6写入命中,其中状态=1

对于每个这样的事件,存在概率在两个子策略(高和低)之间选取以及选择下一状态位值。通过在初始lru位置中安置负值而选择在未命中时不进行分配。lru0处的状态位保护缓存行在写入未命中时免遭逐出,当发生写入未命中时,旋转lru通路0-3以暴露新的状态位。

表1读取未命中

表2写入未命中

表3读取命中,其中状态=0

表4写入命中,其中状态=0

表5读取命中,其中状态=1

表6写入命中,其中状态=1

3.额外系统

本文所述技术的各个特征可以实现于美国专利号7,577,820和7,805,575以及共同拥有的美国专利申请号12/028,002、12/582,443和12/885,957中所描述的基于多核处理器的系统上,所述文献中的每一个都通过引用而全文并入于此。

本文所述的各种技术可以实现于额外类型的集成电路架构中。例如,除了其中多个处理器核由连接到相应的计算单元的开关网络互连的分片式集成电路架构之外,一些技术可以用于具有单一处理器核的集成电路中,或者用于其中多个处理器核包含由诸如总线或流水线总线等共享互连网络加以互连的相应的计算单元的集成电路中。一些技术可以用于包含执行于单个处理器或者多个单核和/或多核处理器上的多个过程的并行处理环境。

应当理解,前文描述应为示例性的,而不旨在限制本发明的范围;本发明的范围由所附权利要求限定。其他实施方式也在以下权利要求的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1