首页> 中国专利> 用于对晶片外高速缓存存储器的标签集高速缓存的方法、装置和系统

用于对晶片外高速缓存存储器的标签集高速缓存的方法、装置和系统

摘要

在确定对高速缓存数据的访问中提供高速缓存标签的高速缓存的技术和机制。在实施例中,标签存储存储第一集合,其包括与高速缓存存储器的相应数据位置关联的标签。高速缓存标签的高速缓存存储标签存储所存储的标签的子集。在第一集合的标签要存储到高速缓存标签的高速缓存的情况下,第一集合的所有标签被存储到第一部分。在另一个实施例中,第一集合的标签到高速缓存标签的高速缓存的任何存储包括第一集合的标签到仅高速缓存标签的高速缓存的第一部分的存储。维持替换表以供在基于高速缓存标签的高速缓存的集合的所指示的活动性水平来驱逐或替换高速缓存标签中使用。

著录项

  • 公开/公告号CN106030549A

    专利类型发明专利

  • 公开/公告日2016-10-12

    原文格式PDF

  • 申请/专利权人 英特尔公司;

    申请/专利号CN201580010714.3

  • 申请日2015-02-23

  • 分类号G06F12/0831;G06F12/0864;G06F12/0871;G06F12/123;

  • 代理机构中国专利代理(香港)有限公司;

  • 代理人张金金

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 00:43:59

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-02-08

    未缴年费专利权终止 IPC(主分类):G06F12/0831 专利号:ZL2015800107143 申请日:20150223 授权公告日:20190813

    专利权的终止

  • 2019-08-13

    授权

    授权

  • 2016-11-09

    实质审查的生效 IPC(主分类):G06F12/0831 申请日:20150223

    实质审查的生效

  • 2016-10-12

    公开

    公开

说明书

技术领域

本发明大体上涉及高速缓存标签存储。更具体地,某些实施例涉及用于高速缓存标签存储的标签集的技术。

背景技术

所有种类的处理器由于相对于处理器核速度的相对慢存储器速度而变得更加依赖于高速缓存。几十年来已使用许多高速缓存架构。一个常见高速缓存架构是集合关联高速缓存。高速缓存架构具有存储来自系统存储器位置的数据的存储器存储,以及存储标签集的标签存储结构。

在标准高速缓存层次结构中,大体上,高速缓存位置越接近处理器核,高速缓存变得越小且越快。最小且最快的高速缓存大体上驻存在处理器核硅晶片(silicon die)上。另一方面,最大的高速缓存(LLC或最后级别的高速缓存)或多个这样的高速缓存有时在存储器核晶片外驻存。因为要花更长时间将数据传送到处理器核,访问(access)驻存在晶片外高速缓存的数据(如与晶片上高速缓存不同)大体上造成额外延迟。

每个高速缓存具有标签存储结构。如果处理器需要来自某一存储器位置的数据,它可以通过进行存储器位置地址和指定高速缓存的标签存储结构的比较来确定数据是否存储在该高速缓存中。如果标签存储结构在晶片外,进行标签查找的延迟将比如果标签存储结构在晶片上的要大。从而,尽管晶片上标签存储结构因为它们占据有价值空间而使处理器晶片的成本增加,它们通过使标签查找的延迟相对于晶片外高速缓存减少而有助于加快执行。

附图说明

本发明的各种实施例通过示例而非限制的方式在附图的图中图示,并且其中:

图1是图示根据实施例高速缓存标签信息的系统的元件的功能框图。

图2图示根据实施例提供对高速缓存数据的访问的高速缓存标签的高速缓存和标签存储的特征。

图3A是图示根据实施例访问高速缓存标签的高速缓存的方法的要素的流程图。

图3B是图示根据实施例在对高速缓存数据提供访问中使用的标签信息的要素的框图。

图3C是图示根据实施例在对高速缓存数据提供访问中使用的标签信息的要素的框图。

图4A是图示根据实施例用于维持高速缓存标签的高速缓存的方法的要素的流程图。

图4B图示根据实施例在维持高速缓存标签的高速缓存中使用的替换表和状态图的要素。

图4C是图示根据实施例在对高速缓存数据提供访问中使用的标签信息的要素的框图。

图5是图示根据实施例对高速缓存数据提供访问的计算机系统的元件的框图。

图6是图示根据实施例对高速缓存数据提供访问的移动设备的元件的框图。

具体实施方式

描述实现高速缓存标签的高速缓存的装置、系统和方法的实施例。在下列描述中,阐述许多特定细节。然而,理解实施例可在没有这些特定细节的情况下实践。在其他实例中,未详细论述众所周知的元件、规范和协议以避免使某些实施例难以理解。

图1描述实现高速缓存标签的高速缓存的系统100的一个实施例。在许多实施例中,一个或多个处理器核104可以驻存在微处理器硅晶片上,例如晶片1 102。在其他微处理器实施例中,可以存在耦合在一起的多个处理器晶片,每个包括每晶片一个或多个核(对于多个晶片上的处理器核的架构未在图1中示出)。回到图1,处理器核可以耦合于互连105。在不同的实施例中,处理器核104可以是设计成供在任何形式的个人计算机、手持设备、服务器、工作站或现今可用的其他计算设备中使用的任何类型的中央处理单元(CPU)。为了便于解释而示出单个互连105以便不使本发明难以理解。在实践中,该单个互连105可以由使不同个体设备耦合在一起的多个互连组成。另外,在许多实施例中,未示出的更多设备(例如,芯片集)可耦合于互连105。

处理器核104可以-例如,通过互连105-耦合于物理定位在与处理器核104相同晶片上的一个或多个晶片上高速缓存106。在许多实施例中,高速缓存具有与它关联的存储对于所有高速缓存存储器位置的标签的标签存储114。在许多实施例中,标签存储114驻存在与处理器核104分离的硅晶片上,例如晶片2 112。在许多实施例中,标签存储114耦合于一个或多个晶片外(非处理器晶片)高速缓存116-例如,通过互连105-并且位于与晶片外高速缓存116相同的晶片上。

高速缓存标签的高速缓存(CoCT)108可以在处理器晶片102上存储晶片外高速缓存标签的子集。具体地,尽管标签存储114存储所有索引值和每索引值的关联标签集,另一方面,CoCT 108可不存储所有可能的索引值。相反,为了节省存储空间,CoCT 108可以仅存储在标签存储114中所存储的标签的子集。在一些实施例中,不是所有的索引位置在任何指定时间都在CoCT 108中表示。

在一些实施例中,控制对CoCT 108的访问的控制器110确定存储器请求何时与当前位于CoCT 108内的标签匹配并且将这一点向处理器报告。在不同的实施例中,存储器请求可以源于系统中许多设备中的一个,例如处理器核中的一个或其他可能存储器请求发起方之中的总线主I/O设备。存储器访问请求每个可以包括到系统存储器122内的特定位置的相应地址。标签存储114可以包括与晶片外高速缓存116中的特定位置关联的所有标签集。

从而,在存储器请求被控制器110接收时,控制器110可以在存储器请求地址中解析出索引字段(例如,其包括指向集合的指针或集合的标识符)和标签字段并且然后可检查来看看与特定存储器位置关联的标签的索引是否存储在高速缓存标签的高速缓存108内。如果原始索引被存储,则控制器110可以检查与存储器位置关联的原始标签是否在原始索引位置处以多个方式之一存储在CoCT 108内。如果原始标签位于与原始索引位置关联的CoCT 108的条目中,则结果是存储器请求是高速缓存标签的高速缓存108标签命中(即,高速缓存命中)。如果原始标签未存储在CoCT 108的任何这样的条目处,则结果是存储器请求是高速缓存标签的高速缓存108标签未命中。如果来自指定集合的所有方式的标签在CoCT 108中被高速缓存,这也是特定类型的高速缓存未命中,在本文称为集合未命中。

另一方面,如果控制器110在初始查找时未找到存储在CoCT 108中的原始索引,结果是存储器请求是高速缓存标签的高速缓存108索引未命中。在该情况下,控制器110必须从存储器请求提取原始索引值并且然后通过替换当前存储在CoCT 108中的索引而将其插入CoCT 108。在一些实施例(其中CoCT 108自身是关联高速缓存)中,替换政策可以是最近使用最少的政策,其中最近使用最少的索引值被替换。在其他实施例中,其他标准替换政策方案可用于替换CoCT 108中的索引值。

一旦将新的索引值插入CoCT 108,则控制器110可以确定与存储器请求关联的特定标签当前是否在索引位置处存储在标签存储114中。如果是这样的话,则结果是标签存储114中的标签命中并且控制器110可以对于在索引位置处存储在标签存储114中的所有方式在新的索引位置处将标签信息输入CoCT 108。

否则,结果是标签存储114中的标签未命中并且控制器110需要发起用与存储器请求关联的标签替换最近使用最少的标签(在标签存储114中的索引位置处的方式中的一个)。该替换将位于存储器请求的地址处的数据从系统存储器输入高速缓存存储器内并且将原始标签从存储器请求输入标签存储114。一旦将标签从系统存储器122输入标签存储114内,则在一些实施例中,控制器110可发起用当前存储在标签存储114中的来自索引值处的每个方式的标签替换CoCT 108中的所有方式(在索引值处)。

在一些实施例中,高速缓存存储器是扇区高速缓存。在扇区高速缓存实施例中,标签存储114中的整体标签存储要求因为每个标签被多个高速缓存条目(例如,高速缓存子块)所共享而减少。在这些扇区高速缓存实施例中,对状态信息的存储要求因为对于每个标签必须有针对于标签关联的每个潜在条目的状态信息(状态信息在背景章节中以及在与图2有关的论述中论述)而增加。例如,如果标签是14位,在非扇区高速缓存中,每扇区将包括2位的状态信息。在具有每个方式8个扇区的扇区高速缓存中,存在与每个标签关联的8个高速缓存条目,从而每标签将需要包括16位(2位·8)的状态信息。在该示例中,状态信息比标签信息占据更多的空间。

在根据一个实施例的一个说明性场景中,集合的存储要求是8.5个字节,其包括标签信息、状态信息、驱逐/高速缓存替换政策(RP)信息。在一些实施例中,高速缓存标签的高速缓存使用最近使用最少(LRU)的替换政策或其他政策。具体地,下列信息将存储在高速缓存标签集的高速缓存中:

(14位标签+2位状态)·4个方式+4位RP信息=8.5个字节

为了在这样的情景中在CoCT 108中存储2K(2­11)个集合,存储要求则将是17K(2K*8.5>

尽管某些实施例在该方面不受限制,CoCT 108的不同部分可以专用于-至少关于标签的高速缓存方面-标签存储114中存储的标签的不同的相应集合。通过图示而非限制的方式,CoCT 108可包括相应部分118、120,并且标签存储114可包括标签130的一个或多个集合和标签132的一个或多个集合。在这样的实施例中,控制器110的配置状态可定义或另外指示在部分118、120中由CoCT 108对一个或多个集合130的任何标签高速缓存要仅用部分118(例如)执行。相似地,控制器110可实现高速缓存,其中在部分118、120中由CoCT 108对一个或多个集合132的任何标签高速缓存可以仅用部分120执行。

备选地或另外,CoCT 108自身可以是N方式集合关联高速缓存。在这样的实施例中,标签存储114的标签可在每集合基础上被高速缓存到CoCT 108-例如,其中对于标签存储114的一些或所有集合,指定集合的标签到CoCT 108的任何高速缓存是该集合的所有标签到CoCT 108的高速缓存的部分。相似地,对于标签存储114的一些或所有集合,指定集合的标签从CoCT 108的任何驱逐可以是该集合的所有标签从CoCT 108驱逐的部分。

图2图示根据一个实施例的N方式集合关联配置中的标签地址结构、高速缓存标签集的高速缓存的结构和高速缓存标签的高速缓存的个体标签地址条目的特征。

在说明性实施例中,对40位(例如)地址空间的存储器访问请求可以包括40位地址字段中的下列信息片段:原始标签字段、原始索引字段和偏移字段。典型地,仅原始标签字段存储在标签存储结构中所存储的标签条目200内。在256M的直接映射(1方式关联)高速缓存中使用具有64字节高速缓存行大小的40位寻址示例,地址中每个子段的大小的示例可以包括12位原始标签、22位索引和6位偏移。22位索引字段可以是指向标签存储结构中的特定索引化位置的指针。12位原始标签可以是实际存储器地址的最高12个位。标签的大小还可以通过它的关联性和高速缓存行大小来确定。例如,具有64字节高速缓存行的256MB 4方式集合关联高速缓存可具有20位索引字段和4M标签(220·4),其中每个标签的大小是14个位。

图2还图示标签集202的实施例。对于4方式集合关联高速缓存的标签集202存储四个标签。每方式(方式0-方式3)可存储特定标签以及与每个标签关联的高速缓存条目有关的特定数量的状态信息。状态信息可以是每标签特定的,从而,可需要有与每个标签关联的状态信息位。另外,标签集还可需要包括高速缓存替换政策信息,例如LRU位或其他LRU型信息,以在可需要存储新标签时告知控制器四个标签中的哪个应得到驱逐。尽管某些实施例在该方面不受限制,纠错码(ECC)位还可每集合地来使用以使标签集的存储错误最小化。

图2还描述在高速缓存标签的高速缓存内存储的标签集条目(CoCT标签集条目204)的实施例。集合关联高速缓存大体上对于许多类型的高速缓存配置都受到欢迎。从而,在许多实施例中,高速缓存是多方式集合关联高速缓存。因此,高速缓存标签的高速缓存中的条目可需要在特定索引位置存储对于高速缓存的所有方式的标签信息(标签集206的内容/数据)。在这些实施例中,来自原始地址(例如,如上文论述的40位地址配置)的索引字段(标签集208的寻址)可以指向高速缓存标签的高速缓存内存储的标签集合的位置。在一些实施例中,高速缓存标签的高速缓存的结构本身也采用集合关联方式存储。从而,原始索引字段可分为高速缓存标签的高速缓存的标签字段以及高速缓存标签的高速缓存的索引字段以允许在高速缓存标签的高速缓存内提取集合。例如,使用来自40位地址的20位原始索引字段,原始索引字段的较高的12个位可用作高速缓存标签的集合关联高速缓存中的标签字段。在该示例中,原始索引字段的较低的8个位可用作高速缓存标签的高速缓存中的索引字段。

图3A图示根据实施例用于维持高速缓存标签的高速缓存的方法300的要素。可以执行方法300以例如基于来自处理器(例如一个或多个处理器核104)的存储器访问请求使CoCT 108保持为最新。在实施例中,用控制器110执行方法300。

方法300可以包括在310处在标签存储处存储包括第一标签的集合。这些第一标签每个可以与高速缓存存储器的相应数据位置关联-例如,晶片外高速缓存116。通过图示而非限制的方式,图3B示出根据一个实施例的说明性系统350。在系统350中,标签存储352包括八个集合,每个包括八个相应的方式。每个这样的方式可存储相应标签,其中标签存储352的第j集合的第i方式的标签T在本文由标记Tij指示。标签存储352的每个这样的标签Tij可对应于高速缓存存储器(未示出)中存储的数据的相应位置。如在图3C中进一步图示的,根据另一个实施例的系统360可以包括标签存储365,其具有例如标签存储352的特征中的一些或全部。某些实施例关于存储到数据存储的集合的数量和/或关于指定集合中方式的总数量不受限制。而且,理解标签存储中集合的方式可以包括除标签以外的其他信息-例如如在本文关于图2论述的。

方法300可以进一步包括在320处在高速缓存标签的高速缓存处存储标签存储处所存储的标签的子集。例如,系统350的高速缓存标签的高速缓存CoCT 354可以包括一个或多个集合-如由说明性集合S0、S1、S2、S3表示的-每个存储标签存储352的八个集合中的相应一个的标签。在指定时间,CoCT 354可存储仅标签存储352的八个集合中的一些的标签。在系统360的实施例中,CoCT 370包括一个或多个集合-如由说明性集合772、774、776、778表示的-每个存储标签存储365的八个集合中的相应一个的标签。与CoCT 354相似,在标签存储365的八个集合中,CoCT 370可以仅存储这些集合中的一些的标签。

高速缓存标签的高速缓存可以包括第一部分和第二部分,其包括不同相应的高速缓存存储位置-例如设置为相应的一个或多个集合。在这样的实施例中,第一部分和第二部分可以至少关于存储标签存储的标签而专用于标签存储的不同相应集合。使CoCT的不同部分专用于标签存储的不同相应集合可使要搜索来识别命中事件的出现(缺乏)的CoCT的总高速缓存存储位置减少。

例如,方法300可以进一步包括在330处基于来自处理器的存储器访问请求来更新标签的子集,其中第一集合的标签到高速缓存标签的高速缓存的任何存储包括第一集合的标签到仅第一部分的存储。通过图示而非限制的方式,系统350可以是这样的实施例,其中控制器逻辑(未示出)(例如执行方法400的那些)专用于CoCT 354的一个或多个集合-例如,说明性集合S1、S2、S3、S4中的一些或全部-每个仅存储标签存储350的八个集合中的相应一个的标签。这样的控制器的映射信息或其他配置状态可以定义或另外指示S0的标签存储仅针对集合0的标签T00、T10…T70,S1的标签存储仅针对集合2的标签T02、T12…T72,S2的标签存储仅针对集合4的标签T04、T14…T74并且/或S3的标签存储仅针对集合6的标签T06、T16…T76。这样的S0(或CoCT>

在系统360的其他说明性实施例中,控制器逻辑(未示出)(例如执行方法300的那些)提供CoCT 370的集合-例如,说明性集合772、774、776、778中的一个-以在不同的时间存储标签存储365的不同集合的标签。通过图示而非限制的方式,控制器逻辑的关联映射或其他这样的功能性可规定集合772、774每个可用于存储仅标签存储365的第一多个集合的标签-如由标签存储365的说明性“偶数”集合0、2、4、6表示的。备选地或另外,集合776、778可每个可用于存储仅标签存储365的第二多个集合的标签-例如,标签存储365的说明性“奇数”集合1、3、5、7。不同的实施例可对标签存储的不同相应集合提供CoCT部分(例如集合)的各种其他关联映射中的任一个。

在对于系统360的实施例的说明性场景中,集合772可在用图3C图示的指定时间点存储标签T00、T10…T70和标签值“00”,其指示集合772当前存储集合772可用于的偶数集合的第0集合的标签。同时,集合774可以存储集合6的标签T06、T16…T76和标签值“11”,其指示集合774当前存储集合774可用于的奇数集合的第3集合(其是标签存储365的全部八个集合中的第6集合)的标签。此外,集合776可存储标签T03、T13…T73和标签值“01”,其指示奇数集合的第1集合(标签存储365的全部八个集合中的第3个)的标签当前被集合776存储。同时,集合778可存储标签T07、T17…T77和标签值“11”,其指示奇数集合的第3集合(标签存储365的全部八个集合中的第7个)的标签当前被集合778存储。

在实施例中,集合772、774每个进一步存储相应的替换政策(RP)信息,其例如指示对应集合是集合772、774中最近使用最多(MRU)还是最近使用最少(LRU)的。这样的RP信息可被控制器使用来确定-例如响应于以标签存储265的未高速缓存偶数集合的标签为目标的存储器请求-要选择集合772、774中的哪个以用于标签驱逐以及未高速缓存偶数集合的标签的存储。基于这样的选择,所选集合的标签信息可以用新近高速缓存的偶数集合的标识符来更新,并且集合772、774的RP信息可被更新来反映集合772、774中所选的一个现在是MRU集合。

相似地,集合776、778每个可以进一步存储相应的RP信息,其指示对应集合是集合776、778中的MRU还是LRU。这样的RP信息可以用于确定-例如响应于以标签存储365的未高速缓存的奇数集合的标签为目标的存储器请求-要选择集合776、778中的哪个以用于标签驱逐以及未高速缓存奇数集合的标签的存储。基于这样的选择,所选集合的标签信息可以用新近高速缓存的奇数集合的标识符来更新,并且集合776、778的RP信息可被更新来反映集合776、778中所选的一个现在是MRU集合。

在一些实施例中,方法300在每集合基础上将集合的所有标签存储到高速缓存标签的高速缓存。例如,执行方法300的控制器逻辑可规定响应于第一集合的标签要存储到高速缓存标签的高速缓存的任何确定将第一集合的所有标签存储到CoCT的第一部分。在实施例中,标签存储可进一步存储第二集合,其包括第二标签,每个与高速缓存存储器内存储的相应数据位置关联。执行方法300的控制器逻辑可以进一步规定第二集合的标签通过控制器到高速缓存标签的高速缓存的任何存储包括第二集合的标签到仅CoCT的第二部分的存储。备选地或另外,这样的控制器逻辑可规定响应于第二集合的标签要存储到高速缓存标签的高速缓存的任何确定将第二集合的所有标签存储到高速缓存标签的高速缓存的第二部分。

如在图4A-4C中图示的,根据某些实施例的控制器逻辑可维持数据结构-在本文称为替换表-以用作参考来对多集合高速缓存标签确定选择哪个集合的标签从高速缓存标签的高速缓存驱逐(例如以允许替换集合的标签到高速缓存标签的高速缓存的后续存储)。这样的驱逐可例如响应于存储器访问请求来执行,该存储器访问请求包括无法与当前存储在高速缓存标签的高速缓存中的任何标签匹配并且其中标签的集合当前在CoCT中未被跟踪的标签。

图4A图示根据实施例用于访问高速缓存标签的高速缓存的方法400的要素。例如,方法400可由(例如控制器110的)控制器逻辑执行。尽管某些实施例在该方面不受限制,方法400可以作为方法300的部分执行或作为方法300的补充还可执行方法400以用于维持高速缓存标签的高速缓存。

方法400可以包括在405处使替换表的第一条目与存储到高速缓存标签的高速缓存的第一集合标签关联。在实施例中,405处的关联可以响应于第一集合标签到高速缓存标签的高速缓存的存储而执行。405处的关联可以包括将第一条目的活动性变量设置成预定多个值的初始值。

通过图示而非限制的方式,图4B图示根据一个实施例的替换表RT 450,用于高速缓存标签(未示出)的高速缓存,其包括N个标签高速缓存(TC)集合0、1…(N-2)、(N-1)。TC集合可以随时间各自被不同地分配来存储标签存储(未示出)的相应标签集的标签。图4B还示出说明性状态图454,其可以用于对RT 450的指定条目确定预定多个值中的哪个要赋予该条目的活动性变量。尽管某些实施例在该方面不受限制,状态图454可包括预定多的四个值0至3。RT条目的活动性变量可响应于连续存储器请求被更新来反映较高活动性,这些连续存储器请求每个命中(匹配)对应高速缓存标签集的相应标签。备选地或另外,如果存储器请求未命中高速缓存标签集中的任何标签,这样的活动性变量可被更新以反映较低活动性。

例如,方法400可以在410处确定第一存储器访问请求的标签是否对应于(匹配)第一集合标签的标签。响应于在410处确定第一存储器访问请求的标签对应于这样的高速缓存标签的评估,方法400可以在415处改变第一条目的变量来指示第一集合的增加活动性。方法400可以进一步服务于第一请求,如在420处由访问高速缓存存储器中的位置(其对应于第一存储器访问请求的标签)的操作所指示的。否则,方法400可以在425处改变第一条目的变量来指示第一集合的减小活动性。

继第一存储器访问请求之后,第二存储器访问请求可以从主处理器或其他这样的请求方逻辑发出。第二存储器访问请求可以以当前未在高速缓存标签的高速缓存中表示的存储器位置为目标。例如,控制器逻辑可以评估第二存储器访问请求中包括的标签来确定该标签是否匹配高速缓存标签的高速缓存中存储或另外被跟踪的任何标签-例如来检测集合未命中事件。响应于未能识别任何这样的匹配高速缓存标签,方法400可以在435处基于替换表的对应条目的活动性值选择标签的集合。例如,指针452可以移动-例如作为410处的确定之前、期间或响应于其的后台进程-以连续检查RT 450的条目来识别指示足够低活动性水平的活动性变量。通过图示而非限制的方式,435处的选择可以包括搜索替换表中的等于初始值(例如,第一条目的活动性变量在405处所设置成的值)的活动性变量。如由状态图454图示的,可以选择标签的高速缓存集合以用于替换,其中它识别为指示预定多个这样的水平中的最低-或另外足够低-的活动性水平(例如,值3)。方法400然后可以在440处从高速缓存标签的高速缓存驱逐所选集合的标签。

图4C图示系统460,其根据实施例根据技术(其包括方法400的特征中的一些或全部)来操作。系统460包括标签存储465来存储标签集,如由说明性八个集合Set0…Set7所表示的。尽管某些实施例在该方面不受限制,标签存储465的这八个集合每个可以包括四个相应的方式,其进而每个包括对于高速缓存存储器(未示出)中的对应位置的相应标签。

系统460可以进一步包括高速缓存标签的高速缓存CoCT 480,其在说明性实施例中包括三个集合CSet0、CSet1、CSet2。在指定时间,CSet0、CSet1、CSet2每个可被不同地分配来存储Set0…Set7中相应一个的标签。例如,系统460的控制器470可以维持标签高速缓存(TC)索引474,其包括条目,每个对应于Set0…Set7中不同的相应一个。基于存储器访问请求的处理,控制器470可不同地将值存储到TC索引474的条目,每个值定义或另外指示CSet0、CSet1、CSet2中的哪个(如有的话)当前存储Set0…Set7中对应一个的标签。例如,在时间T1,值0、1、2被不同地存储在TC索引474的对应条目中来指示Set0、Set2和Set5的标签被分别存储在CSet0、CSet1、CSet2处。在这样的实施例中,TC索引474的条目中的值3可以指示Set0…Set7中对应一个的标签当前未存储在CoCT 480中。

控制器470可以进一步维持替换表RT 472来充当参考以选择CSet0、CSet1、CSet2中的一个用于驱逐一个集合的标签并且用于存储标签存储465的下一集合的标签。RT 472可以包括条目,每个存储相应变量,其指示CSet0、CSet1、CSet2中对应一个的活动性水平。RT 472的条目可以根据状态图454来维持,但某些实施例在该方面不受限制。例如,在时间T1,RT 472对CSet0、CSet1、CSet2指示相应活动性水平0、3、1。因此,CSet1可以-在时间T1-有资格被选择用于Set2的标签从CoCT 480的驱逐。这样的标签驱逐可随后响应于未命中当前高速缓存到CoCT 480的Set0、Set2和Set5的标签中的任一个的存储器访问请求而实现。例如,下一个存储器访问请求可以包括Set3的标签T03、T13、T23、T33中的一个。这样的存储器访问请求的结果在图4C中在继时间T1之后的时间T2图示。

例如,在时间T2,RT 472可被更新来指示CSet0的较低水平活动性-例如,其中对应于CSet0的条目的活动性变量从0变为1。然而,因为Set3的新近高速缓存标签初始有资格用于后续驱逐,对应于CSet1的RT 472的条目可以保持在某一最低水平(例如图示的水平3)。选择CSet1用于标签驱逐可阻止RE 472的条目(其对应于CSet2)的检查(和更新)。在实施例中,TC索引474被更新来反映CSet0、CSet1和CSet2分别存储Set0、Set3、Set5的标签。

图5是其中可以实现存储器访问的计算系统的实施例的框图。系统500代表根据本文描述的任何实施例的计算设备,并且可以是膝上型计算机、台式计算机、服务器、游戏或娱乐控制系统、扫描仪、复印机、打印机或其他电子设备。系统500可以包括处理器520,其对系统500提供处理、操作管理和指令的执行。处理器520可以包括任何类型的微处理器、中央处理单元(CPU)、处理核或其他处理硬件来对系统500提供处理。处理器520控制系统500的整体操作,并且可以是或包括一个或多个可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑设备(PLD)或类似物,或这样的设备的组合。

存储器子系统530代表系统500的主存储器,并且对要由处理器520执行的代码或要在执行例程中使用的数据值提供暂时存储。存储器子系统530可以包括一个或多个存储器设备,例如只读存储器(ROM)、闪速存储器、一个或多个种类的随机存取存储器(RAM)或其他存储器设备或这样的设备的组合。除其他外,存储器子系统530还可以存储和托管操作系统(OS)536来提供软件平台以用于在系统500中执行指令。另外,存储和执行来自存储器子系统530的其他指令538以提供系统500的逻辑和处理。OS 536和指令538由处理器520执行。

存储器子系统530可以包括存储器设备532,其中它存储数据、指令、程序或其他项。在一个实施例中,存储器子系统包括存储器控制器534,其是根据本文描述的任何实施例的存储器控制器,并且其提供用于访问存储器设备532的机构。在一个实施例中,存储器控制器534提供命令来访问存储器设备532。

在一些实施例中,系统500包括两级存储器(备选地在本文称为‘2LM’),其包括系统盘级存储的高速缓存子集(例如除运行时数据外)。该主存储器可以包括第一级(备选地在本文称为“近存储器”),其包括由例如DRAM组成的相对小的快速存储器;和第二级(备选地在本文称为“远存储器”),其包括相对较大且较慢(相对于近存储器)的易失性存储器(例如,DRAM)或非易失性存储器存储-例如,其包括相变存储器(PCM)、三维交叉点存储器、电阻存储器、纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、包含忆阻器技术的磁阻随机存取存储器(MRAM)存储器、自旋转移转矩(STT)-MRAM和/或类似物。远存储器可以作为“主存储器”对用处理器520执行的主操作系统(OS)呈现,其中近存储器是远存储器的高速缓存,其例如对于OS是透明的。两级存储器的管理可以通过经由主中央处理单元(CPU)执行的控制器逻辑和模块的组合来进行。

例如,存储器控制器534可以控制处理器520对远存储器的访问-例如存储器532中的一些或全部中包括的,可以充当处理器520的远存储器,其中存储器控制器534作为远存储器控制逻辑操作。在这样的实施例中,处理器520可以包括或耦合于近存储器控制器逻辑来访问近存储器(未示出)-例如除存储器532外-和耦合于此的2LM控制器逻辑。这样的2LM控制器逻辑可以包括CoCT和管理器逻辑以根据本文论述的技术来维持CoCT。近存储器可为了高效处理而经由高带宽、低延迟部件耦合于处理器520。远存储器可以经由低带宽、高延迟部件(如与近存储器相比较)耦合于处理器520。

处理器520和存储器子系统530耦合于总线/总线系统510。总线510是抽象概念,其代表通过合适的网桥、适配器和/或控制器连接的任何一个或多个独立物理总线、通信线/接口和/或点到点连接。因此,总线510可以包括例如系统总线、外围部件互连(PCI)总线、超传输或工业标准架构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)或电气和电子工程师协会(IEEE)标准1394总线(统称为“Firewire”)中的一个或多个。总线510的总线还可以对应于网络接口550中的接口。

系统500还可以包括耦合于总线510的一个或多个输入/输出(I/O)接口540、网络接口550、一个或多个内部大容量存储设备560和外围接口570。I/O接口540可以包括一个或多个接口部件,用户可通过其来与系统500交互(例如,视频、音频和/或字母数字接口)。网络接口550对系统500提供通过一个或多个网络与远程设备(例如,服务器、其他计算设备)通信的能力。网络接口550可以包括以太网适配器、无线互联部件、USB(通用串行总线)或其他基于有线或无线标准的或专用接口。

存储560可以是或包括用于采用非易失性方式存储大量数据的任何常规介质,例如一个或多个磁、固态或基于光的盘或组合。存储560以永久状态持有代码或指令和数据562(即,尽管到系统500的电力中断,也保留值)。尽管存储器530在执行或操作存储器来对处理器520提供指令,存储560一般可以视为“存储器”。虽然存储760是非易失性的,存储器530可以包括易失性存储器(即,如果中断到系统500的电力,数据的值或状态是不确定的)。

外围接口570可以包括上文未专门提到的任何硬件接口。外设大体上指依赖性地连接到系统500的设备。依赖性连接是其中系统500提供软件和/或硬件平台(在其上执行操作并且用户与之交互)的连接。

图6是其中可实现存储器访问的移动设备的实施例的框图。设备600代表移动计算设备,例如计算平板、移动电话或智能电话、支持无线的电子阅读器或其他移动设备。将理解大体上示出部件中的某些,并且不是这样的设备的所有部件都在设备600中示出。

设备600可以包括处理器610,其执行设备600的主要处理操作。处理器610可以包括一个或多个物理设备,例如微处理器、应用处理器、微控制器、可编程逻辑设备或其他处理部件。由处理器610执行的处理操作包括在其上执行应用和/或设备功能的操作平台或操作系统的执行。处理操作包括与人类用户或其他设备的I/O(输入/输出)有关的操作、与电力管理有关的操作和/或与使设备600连接到另一个设备有关的操作。处理操作还可以包括与音频I/O和/或显示I/O有关的操作。

在一个实施例中,设备600包括音频子系统620,其代表与向计算设备提供音频功能关联的硬件(例如,音频硬件和音频电路)和软件(例如,驱动器、编解码器)部件。音频功能可以包括扬声器和/或耳机输出,以及麦克风输入。对于这样的功能的设备可以集成到设备600内,或连接到设备600。在一个实施例中,用户通过提供被处理器610接收和处理的音频命令而与设备600交互。

显示子系统630代表对用户提供视觉和/或触觉显示来与计算设备交互的硬件(例如,显示设备)和软件(例如,驱动器)部件。显示子系统630可以包括显示界面632,其包括用于向用户提供显示的特定屏幕或硬件设备。在一个实施例中,显示界面632包括与处理器610分离来执行与显示有关的至少一些处理的逻辑。在一个实施例中,显示子系统630包括触屏设备,其向用户提供输出和输入两者。

I/O控制器640代表与用户的交互有关的硬件设备和软件部件。I/O控制器640可以操作来管理是音频子系统620和/或显示子系统630的部分的硬件。另外,I/O控制器640图示对于连接到设备600的额外装置的连接点,由此用户可与系统交互。例如,可以附连到设备600的设备可包括麦克风设备、扬声器或立体音响系统、视频系统或其他显示设备、键盘或键区设备或用于与例如卡阅读器或其他设备等特定应用一起使用的其他I/O设备。

如上文提到的,I/O控制器640可以与音频子系统620和/或显示子系统630交互。例如,通过麦克风或其他音频设备的输入可以对设备600的一个或多个应用或功能提供输入或命令。另外,代替显示输出或除显示输出外,还可以提供音频输出。在另一个示例中,如果显示子系统包括触屏,显示设备还充当输入设备,其可以至少部分由I/O控制器640管理。在设备600上还可以存在额外按钮或开关来提供由I/O控制器640管理的I/O功能。

在一个实施例中,I/O控制器640管理例如加速计、拍摄装置、光传感器或其他环境传感器、陀螺仪、全球定位系统(GPS)、或可以包括在设备600中的其他硬件等设备。输入可以是直接用户交互的部分,以及向系统提供环境输入来影响它的操作(例如对于噪声的过滤、调整显示器用于亮度检测、对拍摄装置应用闪光灯,或其他特征)。

在一个实施例中,设备600包括电力管理650,其管理电池电力使用、电池的充电和与电力节省操作有关的特征。存储器子系统660可以包括存储器设备662,用于将信息存储在设备600中。存储器子系统660可以包括非易失性(如果到存储器设备的电力被中断则状态不改变)和/或易失性(如果到存储器设备的电力被状态则状态未定)存储器设备。存储器660可存储应用数据、用户数据、音乐、照片、文件或其他数据,以及与系统600的应用和功能的执行有关的系统数据(无论是长期还是暂时的)。在一个实施例中,存储器子系统660包括存储器控制器664(其也可以视为系统600的控制的部分,并且可以潜在地视为处理器610的部分)来控制存储器662。

连接性670可以包括用于使设备600能够与外部设备通信的硬件设备(例如,无线和/或有线连接器和通信硬件)和软件部件(例如,驱动器、协议栈)。设备可以是例如其他计算设备、无线接入点或基站等独立设备,以及例如耳机、打印机或其他设备等外设。

连接性670可以包括多个不同类型的连接性。为了泛化,设备600图示有蜂窝连接性672和无线连接性674。蜂窝连接性672大体上指由无线载波提供的蜂窝网络连接性,例如经由GSM(全球移动通信系统)或变化或衍生、CDMA(码分多址)或变化或衍生、TDM(时分复用)或变化或衍生、LTE(长期演进-也称为“4G”)或其他蜂窝服务标准提供的。无线连接性674指的是不是蜂窝的无线连接性,并且可以包括个人区域网(例如蓝牙)、局域网(例如WiFi)和/或广域网(例如WiMax)或其他无线通信。无线通信指通过使用通过非固态介质的调制电磁辐射来传递数据。有线通信通过固态通信介质而发生。

外围连接680包括硬件接口和连接器,以及软件部件(例如,驱动器、协议栈),用于进行外围连接。将理解设备600可以既是到其他计算设备(“到”682)的外围设备,又具有连接到它的外围设备(“从”684)。设备600通常具有“对接”连接器,用于连接到其他计算设备以用于例如管理(例如,下载和/或上传、改变、同步)设备600上的内容等目的。另外,对接连接器可以允许设备600连接到某些外设,其允许设备600控制例如到视听或其他系统的内容输出。

除外围对接连接器或其他外围连接硬件外,设备600可以经由公共或基于标准的连接器来进行外围连接680。常见类型可以包括通用串行总线(USB)连接器(其可以包括许多不同硬件接口中的任一个)、DisplayPort(其包括MiniDisplayPort(MDP))、高清晰度多媒体接口(HDMI)、Firewire或其他类型。

在一个实现中,装置包括耦合于处理器的高速缓存存储器、耦合于该高速缓存存储器来存储第一集合(其包括第一标签,每个与高速缓存存储器的相应数据位置关联)的标签存储和高速缓存标签的高速缓存,用于存储标签存储处所存储的标签的子集,该高速缓存标签的高速缓存包括第一部分和第二部分。装置进一步包括控制器,其耦合于高速缓存标签的高速缓存,该控制器基于来自处理器的存储器访问请求来更新标签子集,其中响应于第一集合的标签要存储到高速缓存标签的高速缓存的任何确定,控制器将第一集合的所有标签存储到第一部分,其中第一集合的标签通过控制器到高速缓存标签的高速缓存的任何存储包括第一集合的标签到仅第一部分的存储。

在实施例中,标签存储进一步存储第二集合,其包括第二标签,每个与高速缓存存储器内存储的相应数据位置关联。在另一个实施例中,响应于第二集合的标签要存储到高速缓存标签的高速缓存的任何确定,控制器将第二集合的所有标签存储到第二部分,其中第二集合的标签通过控制器到高速缓存标签的高速缓存的任何存储包括第二集合的标签到仅第二部分的存储。在另一个实施例中,在标签存储的标签的所有集合中,第一部分仅存储第一集合的标签。

在另一个实施例中,标签存储包括:第一多个集合,其包括第一集合;和第二多个集合,其包括第二集合,其中在第一多个集合和第二多个集合中,第一部分仅专用于第一多个集合并且第二部分仅专用于第二多个集合。在另一个实施例中,第一多个集合对应于高速缓存存储器的奇数集合并且第二多个集合对应于高速缓存存储器的偶数集合。在另一个实施例中,高速缓存标签的高速缓存和处理器位于第一晶片上。在另一个实施例中,标签存储结构位于耦合于第一晶片的第二晶片上。

在另一个实现中,方法包括:在标签存储处存储第一集合,其包括第一标签,每个与耦合于处理器的高速缓存存储器的相应数据位置关联;在高速缓存标签的高速缓存处存储标签存储处所存储的标签的子集,该高速缓存标签的高速缓存包括第一部分和第二部分;以及基于来自处理器的存储器访问请求来更新标签的子集,其中响应于第一集合的标签要存储到高速缓存标签的高速缓存的任何确定,第一集合的所有标签存储到第一部分,其中第一集合的标签到高速缓存标签的高速缓存的任何存储包括第一集合的标签到仅第一部分的存储。

在实施例中,方法进一步包括:在标签存储处存储第二集合,其包括第二标签,每个与高速缓存存储器内存储的相应数据位置关联;以及响应于第二集合的标签要存储到高速缓存标签的高速缓存的任何确定,将第二集合的所有标签存储到第二部分。在另一个实施例中,第二集合的标签通过控制器到高速缓存标签的高速缓存的任何存储包括第二集合的标签到仅第二部分的存储。在另一个实施例中,在标签存储的标签的所有集合中,第一部分仅存储第一集合的标签。

在另一个实施例中,其中标签存储包括:第一多个集合,其包括第一集合;和第二多个集合,其包括第二集合,其中在第一多个集合和第二多个集合中,第一部分仅专用于第一多个集合并且第二部分仅专用于第二多个集合。在另一个实施例中,第一多个集合对应于高速缓存存储器的奇数集合并且其中第二多个集合对应于高速缓存存储器的偶数集合。在另一个实施例中,高速缓存标签的高速缓存和处理器位于第一晶片上。在另一个实施例中,标签存储结构位于耦合于第一晶片的第二晶片上。

在另一个实现中,装置包括:高速缓存标签的高速缓存,用于存储标签存储处所存储的标签的子集,该标签的子集每个与高速缓存存储器的相应数据位置关联;和控制器,其包括电路,用于使替换表的第一条目与存储到高速缓存标签的高速缓存的第一集合标签关联,其包括控制器将第一条目的第一变量设置为预定多个值的初始值。如果第一存储器访问请求包括对应于第一集合标签中的一个的标签,则控制器进一步使第一变量变为预定多个值中的另一个来指示活动性水平增加,否则,控制器使第一变量变为预定多个值中的另一个来指示活动性水平减小。响应于未能识别与第二存储器访问请求的标签匹配的高速缓存标签的高速缓存的任何标签,控制器进一步选择标签集以从高速缓存标签的高速缓存驱逐,包括控制器搜索替换表中的等于初始值的变量。

在实施例中,响应于第一集合的标签要存储到高速缓存标签的高速缓存的任何确定,控制器将第一集合的所有标签存储到第一部分。在另一个实施例中,提供第一存储器访问请求的处理器和高速缓存标签的高速缓存位于第一晶片上。在另一个实施例中,标签存储结构位于耦合于第一晶片的第二晶片上。在另一个实施例中,高速缓存标签的高速缓存包含标签存储结构中存储的最近使用最多的标签中的一个或多个。

在另一个实现中,方法包括:响应于第一集合标签到高速缓存标签的高速缓存的存储,使替换表的第一条目与第一集合标签关联,其包括将第一条目的第一活动性变量设置为预定多个值的初始值,其中标签存储存储标签,其每个与高速缓存存储器的相应数据位置关联,并且其中高速缓存标签的高速缓存存储标签存储处所存储的标签的子集。方法进一步包括如果第一存储器访问请求包括对应于第一集合标签中的一个的标签,则使第一活动性变量变为预定多个值中的另一个来指示第一集合的活动性水平的增加,否则使第一活动性变量变为预定多个值中的另一个来指示第一集合的活动性水平的减小。方法进一步包括响应于未能识别与第二存储器访问请求的标签匹配的高速缓存标签的高速缓存的任何标签,选择标签集以从高速缓存标签的高速缓存驱逐,其包括搜索替换表中的等于初始值的活动性变量。

在实施例中,响应于第一集合的标签要存储到高速缓存标签的高速缓存的任何确定,控制器将第一集合的所有标签存储到第一部分。在另一个实施例中,提供第一存储器访问请求的处理器和高速缓存标签的高速缓存位于第一晶片上。在另一个实施例中,标签存储结构位于耦合于第一晶片的第二晶片上。在另一个实施例中,高速缓存标签的高速缓存包含标签存储结构中所存储的最近使用最多的标签中的一个或多个。

本文描述用于对高速缓存数据提供访问的技术和架构。在上文的描述中,为了解释目的,阐述许多特定细节以提供对某些实施例的全面理解。然而,某些实施例可在没有这些特定细节的情况下实践,这对于本领域内技术人员将是明显的。在其它实例中,以框图的形式示出结构和设备以便避免使描述难以理解。

在说明书中对 “一个实施例”或“实施例”的引用意指结合实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。短语“在一个实施例中”在说明书中各种地方中的出现不一定都指相同的实施例。

从关于计算机存储器内的数据位的操作的算法和符号表示方面呈现本文的详细描述中的一些部分。这些算法描述和表示是由计算领域内的技术人员使用以最有效地向本领域内其他技术人员传达它们的工作实质的手段。算法在这里并且一般设想为导致期望结果的步骤的自洽顺序。这些步骤是需要物理操纵物理量的那些。通常,尽管不是必须的,这些量采取能够被存储、转移、组合、比较和用别的方式而操纵的电或磁信号的形式。已经证实有时主要由于常见使用的原因将这些信号称为位、值、要素、符号、字符、项、数字或类似物是方便的。

然而,应该牢记所有这些和相似的术语要与适当的物理量关联并且仅是应用于这些量的方便标签。除非另外具体阐述(如从上文论述显而易见的),意识到在整个说明中,利用例如“处理”或“计算”或“运算”或“确定”或“显示”或类似物等术语的论述指计算机系统或相似的电子计算设备的行为和进程,其操纵表示为计算机系统的寄存器和存储器内的物理(电子)量的数据并且将其转换为相似地表示为计算机系统存储器或寄存器或其他这样的信息存储、传输或显示装置内的物理量的其他数据。

某些实施例还涉及用于执行本文的操作的装置。该装置可专门对于所需目的而构造,或它可包括由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。这样的计算机程序可存储在计算机可读存储介质(例如但不限于任何类型的盘,其包括软盘、光盘、CD-ROM和磁光盘、只读存储器(ROM)、例如动态RAM(DRAM)、EPROM、EEPROM等随机存取存储器(RAM)、磁或光卡或适合用于存储电子指令的任何类型的介质)中,并且耦合于计算机系统总线。

本文呈现的算法和显示器不固有地涉及任何特定计算机或其他装置。各种通用系统可根据本文的教导与程序一起使用,或可证明便于构造更专业的装置来执行需要的方法步骤。多种的这些系统需要的结构将从下文的描述显而易见。另外,未参考任何特定编程语言来描述某些实施例。将意识到多种编程语言可用于实现如本文描述的这样的实施例的教导。

除上文描述的外,可对公开的实施例和其实现做出各种修改而不偏离它们的范围。因此,本文的说明和示例应在说明性而非限制性意义上解释。本发明的范围应仅仅通过参考后跟的权利要求来度量。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号