探听过滤器和非包含共享高速缓冲存储器的制作方法与工艺

文档序号:11733203阅读:233来源:国知局
探听过滤器和非包含共享高速缓冲存储器的制作方法与工艺
本发明涉及数据处理系统的领域。更具体来说,本发明涉及高速缓冲存储器层次结构和用于支持所述高速缓冲存储器层次结构内的一致性的探听过滤电路。

背景技术:
已知提供了具有高速缓冲存储器层次结构的数据处理系统。在非包含(non-inclusive)操作模式中,高速缓冲存储器层次结构进行操作以使得保持了缓存行数据的单个拷贝。此单行的缓存数据例如可以保持在一级(L1)、二级(L2)或三级(L3),但是不会保持在多于一个等级或者一个等级内的多于一个缓存中。此类非包含操作有效利用了缓存层次结构内的存储容量,但是却有当缓存行数据未存储在靠近请求访问所述缓存行数据的事务处理源的位置时访问所述缓存行数据较慢的缺点。另一种操作模式为包含(inclusive)模式。在包含操作模式中,可以将缓存行数据存储在缓存层次结构的多个等级中和缓存层次结构的一个等级内的多个缓存中。此类型的操作可以给请求事务处理源提供对给定行的缓存数据的更快访问,但是却有对缓存层次结构的存储资源的利用效率较低的缺点。已知提供了探听过滤器(snoopfilter)电路,所述探听过滤器电路用以将探听标签(tag)值存储在包含操作模式内,所述探听标签值标识哪些高速缓冲存储器正在存储给定缓存行数据的拷贝,使得探听请求和访问可以被指向正在存储目标缓存行数据的那些本地高速缓冲存储器。探听过滤器电路的缺点在于门数、功率、面积等方面消耗的资源。

技术实现要素:
从一个方面来看,本发明提供了用于处理数据的设备,该设备包括以下部件:多个事务处理源,所述多个事务处理源中的每一个具有本地高速缓冲存储器;共享高速缓冲存储器,其耦接到所述多个事务处理源并配置为在非包含模式下操作,所述共享高速缓冲存储器存储追踪哪些缓存行数据被存储在所述共享高速缓冲存储器中的共享缓存标签值;和探听过滤器电路,其配置为存储用于追踪哪些缓存行数据被存储在所述本地高速缓冲存储器中的探听过滤器标签值;其中响应于对具有目标标签值的目标缓存行数据的事务处理请求:(i)所述共享高速缓冲存储器配置为将所述目标标签值与所述共享缓存标签值进行比较,以检测所述目标缓存行数据是否被存储在所述共享高速缓冲存储器中;和(ii)所述探听过滤器电路配置为将所述目标标签值与所述探听过滤器标签值进行比较,以检测所述目标缓存行数据是否被存储在所述本地高速缓冲存储器的任一个中。本技术提供一种数据处理设备,其具有在非包含模式下操作的共享高速缓冲存储器(如3级高速缓冲存储器)。该数据处理设备还具有探听过滤电路,其存储追踪哪些缓存行数据被存储在本地存储器中的探听过滤器标签值。探听过滤器电路不需要为保持在共享高速缓冲存储器内的缓存行数据存储探听过滤器标签值(尽管在下文论述的某些情况下,也会存储所述标签值),因为可以替代地使用共享缓存标签值来标识和定位将受到事务处理请求的目标缓存行数据。这节省了探听过滤器电路内的空间。本技术可以被认为提供了一种系统,所述系统关于其数据值存储以非包含形式操作(即,共享高速缓冲存储器以非包含形式存储缓存行数据),同时包含性地提供标签存储(即,存在于共享高速缓冲存储器和本地高速缓冲存储器内的所有缓存行数据的标签被分别存储在共享高速缓冲存储器和探听过滤器电路内)。这有助于减少所需要的探听流量,因为缓存行数据的位置和存在可以从探听过滤器电路和共享高速缓冲存储器来确定。探听过滤器电路可以仅存储指示缓存行数据存在于本地高速缓冲存储器中的一个内的探听过滤器标签值,并需要对所有那些本地高速缓冲存储器进行广播。然而,一些实施例可以将事务处理源标识数据存储在探听过滤器电路内,此事务处理源标识数据标识哪些缓存行数据被存储在哪些高速缓冲存储器中。以此方式,更加可能避免推测性探听,因为可以仅从探听过滤器电路确定哪些行的缓存数据被存储以及存储在哪些本地高速缓冲存储器中。事务处理源标识数据可以用以仅标识单个本地高速缓冲存储器,因为这将会保持存储容量并且在很多操作环境下可能已足够。在其它实施例中,事务处理源标识数据可以标识事务处理源的适当子集,该子集所具有的数量被选择来在所消耗的存储空间与所实现的效率增益之间进行平衡。单项事务处理源标识数据也可能为不精确的,并且标识一系列的事务处理源,例如,所有偶数编号的事务处理源或者具有在某一范围内的编号的所有事务处理源。探听过滤器电路的配置可能使得其必须为存储在本地高速缓冲存储器内的每个缓存行数据存储探听过滤器标签值,就这个意义来说其被约束为严格包含的。然而,每个存储的探听过滤器标签值并不必须要具有存储在本地高速缓冲存储器内的相应缓存行数据,因为在一些罕见情况下,可能能够从本地高速缓冲存储器去除缓存行数据,而这没有在探听过滤器电路中进行追踪。探听过滤器电路和共享高速缓冲存储器二者均将目标标签值与其存储的标签值进行比较。如果这些比较中的任一个产生命中(hit),那么事务处理请求由本地高速缓冲存储器中具有匹配的探听过滤出的标签值的适当高速缓冲存储器或者由具有匹配的共享缓存标签值的共享高速缓冲存储器来服务。在一些情形下,可以逐个缓存行地选择性超驰共享高速缓冲存储器的默认非包含行为,使得可能在探听过滤器电路和共享高速缓冲存储器二者中均出现命中,并且探听过滤器电路和共享高速缓冲存储器二者随后向事务处理请求提供服务。如果共享高速缓冲存储器和探听过滤器电路配置为并行执行其比较操作,那么可以增加操作速度并降低控制复杂度。在一些实施例中,共享高速缓冲存储器和探听过滤器电路可以配置为当并行执行访问时作为互锁管线(interlockedpipeline)来操作。如果在共享高速缓冲存储器和探听过滤器电路中均未出现命中,那么可以向主存储器发起对目标缓存行数据的事务处理。返回的目标缓存行数据通常将存储在与事务处理源相对应的一个本地高速缓冲存储器中,而将不会存储在共享高速缓冲存储器中(即,与共享高速缓冲存储器的默认非包含行为一致)。如果随后从所述本地高速缓冲存储器中驱逐出所述目标缓存行数据,那么可以在稍后将其存储在共享高速缓冲存储器内。当共享高速缓冲存储器和探听过滤器电路配置为在将标签值在作为探听过滤器标签值存储在探听过滤器电路中与作为共享缓存标签值存储在共享高速缓冲存储器中之间以原子方式改变以遵循相应缓存行数据的存储位置的改变时,有利地降低了控制复杂度。这种原子行为导致至少就所进行的任何改变的外部可见性而言,当进行了改变时,则此行为将作为单个操作来全部完成。因此,随后的事务处理将不能观察到标签值的存储位置的部分地完成的改变,因为这会产生需要相当大的控制复杂度来进行管理或防止的错误或无法预测的行为。对标签值的存储位置以原子方式进行改变的实例是当将缓存行从一个本地高速缓冲存储器驱逐到共享高速缓冲存储器时或者当将缓存行数据从共享高速缓冲存储器召回到一个本地高速缓冲存储器时。如先前所述,共享高速缓冲存储器可以配置为受到控制以将一个或多个缓存行数据选择性地存储在包含模式下。能够导致这样切换到缓存行数据的包含存储模式的操作实例为对具有一个或多个预定类型中的一种类型的事务处理请求的响应。作为实例,具有使得事务处理向本地高速缓冲存储器读取缓存行数据且随后不会修改存储在该本地高速缓冲存储器中的该缓存行数据这一类型的事务处理可以例如触发/允许该缓存行数据的包含存储。在一些实施例中,共享高速缓冲存储器和探听电路可以配置为存储针对与多个事务处理源中的一个事务处理源相关联的每个缓存行数据的唯一状态数据,其中此唯一状态数据指示该缓存行数据是否存储在所述多个事务处理源中任何其它事务处理源的本地高速缓冲存储器中。因此,该唯一状态数据指示缓存行数据是为了单个事务处理源而被唯一存储还是为了多个事务处理源而被非唯一存储。在一些实施例中,共享高速缓冲存储器和探听过滤器电路可以配置为通过如下方式来响应从给定事务处理源接收到命中由不同的事务处理源存储在共享高速缓冲存储器中的缓存行数据的非修改读取事务处理:将该缓存行数据返回到该给定事务处理源以供存储在该给定事务处理源的本地高速缓冲存储器中,留下该缓存行数据存储在该共享高速缓冲存储器中,并在共享高速缓冲存储器和探听过滤器电路二者中为该缓存行数据设置唯一状态数据,以指示该缓存行数据是与多个事务处理源相关联地存储。以此方式,至少就对于其接收到非修改读取事务处理的该缓存行数据来说,共享高速缓冲存储器被切换到在包含模式下操作。在其它实施例中(包括与上述实施例相结合),共享高速缓冲存储器和探听过滤器电路可以配置为通过如下方式来响应从给定事务处理源接收到在共享高速缓冲存储器中未命中而命中存储在不同事务处理源的本地高速缓冲存储器中的缓存行数据的非修改读取事务处理:将该缓存行数据返回到给定事务处理源以供存储在该给定事务处理源的本地高速缓冲存储器中,留下该缓存行数据存储在所述不同事务处理源的本地高速缓冲存储器中,将该缓存行数据存储在该共享高速缓冲存储器中,并在共享高速缓冲存储器和探听过滤器电路二者中为该缓存行数据设置唯一状态数据,以指示该缓存行数据是与多个事务处理源相关联地存储。同样,这将操作切换到针对所涉及缓存行数据的包含模式。当响应于来自多个事务处理源中的一个事务处理源的事务处理请求而从存储器提取缓存行数据时,该缓存行数据将被存储在所述多个源中的一个源的本地高速缓冲存储器中,并且相应的探听过滤器标签值将被存储在探听过滤器电路中。如果事务处理源标识数据值也由探听过滤器电路存储,那么可以将该数据同时写入。将了解,所述多个事务处理源可以具有多种不同的形式。在一种形式下,这些事务处理源可以包括一个或多个处理器核心。本地高速缓冲存储器可以类似地具有多种不同的形式,例如包括L1高速缓冲存储器和L2高速缓冲存储器。所述多个事务处理源可以通过基于环的互连而方便地连接在一起。当将多个事务处理源或多个共享高速缓冲存储器添加到系统时,对这种基于环的互连进行有效地缩放。从另一个方面来看,本发明提供了用于处理数据的设备,该设备包括以下部件:用于产生事务处理的多个事务处理源装置,所述多个事务处理源装置中的每一个具有用于存储数据的本地高速缓冲存储器装置;用于存储数据的共享高速缓冲存储器装置,所述共享高速缓冲存储器装置耦接到所述多个事务处理源装置并配置为在非包含模式下操作,所述共享高速缓冲存储器装置存储追踪哪些缓存行数据被存储在所述共享高速缓冲存储器装置中的共享缓存标签值;和探听过滤器装置,其用于存储用于追踪哪些缓存行数据被存储在所述本地高速缓冲存储器装置中的探听过滤器标签值;其中响应于对具有目标标签值的目标缓存行数据的事务处理请求:(i)所述共享高速缓冲存储器装置配置为将所述目标标签值与所述共享缓存标签值进行比较,以检测所述目标缓存行数据是否被存储在所述共享高速缓冲存储器装置中;和(ii)所述探听过滤器装置配置为将所述目标标签值与所述探听过滤器标签值进行比较,以检测所述目标缓存行数据是否被存储在所述本地高速缓冲存储器装置的任一个中。从又一个方面来看,本发明提供了一种处理数据的方法,包括以下步骤:由多个事务处理源产生事务处理;将各自的数据存储在所述多个事务处理源中的每一个的本地高速缓冲存储器中;将数据存储在耦接到所述多个事务处理源的共享高速缓冲存储器中;使所述共享高速缓冲存储器在非包含模式下操作;将追踪哪些缓存行数据被存储在所述共享高速缓冲存储器装置中的共享缓存标签值存储在所述共享高速缓冲存储器中;将用于追踪哪些缓存行数据被存储在所述本地高速缓冲存储器装置中的探听过滤器标签值存储在探听过滤器电路中;和响应于对具有目标标签值的目标缓存行数据的事务处理请求:(i)将所述目标标签值与所述共享缓存标签值进行比较,以检测所述目标缓存行数据是否被存储在所述共享高速缓冲存储器中;和(ii)将所述目标标签值与所述探听过滤器标签值进行比较,以检测所述目标缓存行数据是否被存储在所述本地高速缓冲存储器的任一个中。从将结合附图来阅读的说明性实施例的以下详细描述,将显而易见本发明的以上和其它目的、特征和优点。附图说明图1示意性地图示了包括多个事务处理源、共享高速缓冲存储器和探听过滤器电路的数据处理设备,每个事务处理源包括本地高速缓冲存储器;图2示意性地图示了共享高速缓冲存储器;图3示意性地图示了探听过滤器电路;图4图示了由探听过滤器电路和共享高速缓冲存储器执行的比较操作的并行互锁管线操作;和图5示意性地图示了原子标签维护,其中标签值的存储位置在探听过滤器电路与共享高速缓冲存储器之间改变。具体实施方式图1示意性地图示了包括耦接到主存储器6的集成电路4上的系统芯片2。片上系统集成电路4包括多个事务处理源8、10,每个事务处理源包括L2高速缓冲存储器、两个L1高速缓冲存储器和两个处理器核心。每个事务处理源8、10内的所述L2高速缓冲存储器和所述两个Ll高速缓冲存储器可以被共同认为是针对所述单独的事务处理源8、10的本地高速缓冲存储器。基于环(ring)的互连12将事务处理源8、10耦接到探听过滤器电路14和L3缓存形式的共享高速缓冲存储器16。存储器控制器18也耦接到基于环的互连12,并且如果主存储器6内的数据不存在于由共享高速缓冲存储器16和事务处理源8、10内的本地高速缓冲存储器形成的缓存层次结构内,那么允许对所述数据进行访问。当处理器核心发出试图访问缓存行数据的事务处理时,确定此缓存行数据是否被存储在与所述处理器核心相关联的本地高速缓冲存储器中。如果在本地高速缓冲存储器中未命中,那么将事务处理通过基于环的互连12发送到探听过滤器电路14和共享高速缓冲存储器16。探听过滤器电路14和共享高速缓冲存储器16执行与在基于环的互连12上发送的事务处理相关联的目标标签值的并行管线互锁标签查找。此查找包括将目标标签值与存储在探听过滤器电路14内的探听过滤器标签值进行比较并与存储在共享高速缓冲存储器16内的共享缓存标签值进行比较。如果在共享高速缓冲存储器16内出现命中,那么由共享高速缓冲存储器16来向事务处理提供服务。如果在探听过滤器电路14内出现命中,那么探听过滤器电路返回信号,所述信号确认所述目标缓存行数据被存储在片上系统集成电路4内的本地高速缓冲存储器中的一个内并(使用与探听过滤器标签值相关联地存储的事务处理源标识数据)标识此本地高速缓冲存储器。如果在探听过滤器电路14和共享高速缓冲存储器16二者中均出现未命中,那么存储器控制器18对主存储器6发起关于目标缓存行数据的芯片外存储器访问。从主存储器6返回的目标缓存行数据被存储回到请求所述目标缓存行数据的事务处理源的本地高速缓冲存储器中,并且相应的探听过滤器标签项连同标识哪个事务处理源具有存储所述目标缓存行数据的本地高速缓冲存储器的事务处理源标识数据值被写入到探听过滤器电路14中,以通过此探听过滤器标签值来标识存储回到本地高速缓冲存储器中的缓存行数据的存储位置。共享高速缓冲存储器16主要以非包含形式操作,因为默认行为在于缓存行数据将被存储在共享高速缓冲存储器16中或存储在一个本地高速缓冲存储器中,但不会存储在二者中。在某些情况下,可以超驰(override)此默认非包含行为。具体来说,可以识别寻找目标缓存行数据的事务处理的事务处理类型,并且如果这与一个或多个预定类型匹配,那么可以触发关于所述目标缓存行数据的包含存储模式。具体来说,如果事务处理是随后不会修改缓存行数据的读取(readclean),那么如果在共享高速缓冲存储器16中出现命中,那么目标缓存行数据可以被返回到请求其的事务处理源以供存储在所述事务处理源的本地高速缓冲存储器中,同时保持存储在共享高速缓冲存储器16中。探听过滤器标签值将被写入到探听过滤器电路14中,以追踪事务处理源内目标缓存行数据的存在。因此,探听过滤器标签值和共享缓存标签值二者都将追踪相同的缓存行数据,并且将指示其在多于一个地方的存在。可以将非包含行为切换到针对给定缓存行数据的包含行为的另一种情况为,如果进行随后不会修改缓存行数据的读取事务处理,并且在共享高速缓冲存储器16中未命中,但是由探听过滤器电路14指示为由一个本地高速缓冲存储器命中,那么将从存储有目标缓存行数据的本地高速缓冲存储器检索到所述目标缓存行数据,并且将拷贝放置在共享高速缓冲存储器16和请求所述目标缓存行数据的事务处理源的本地高速缓冲存储器二者中。在这种情况下,结果是目标缓存行数据将存储在系统内的三个不同位置内,即,存储在两个本地高速缓冲存储器内和共享高速缓冲存储器16内。关于所述缓存行切换到包含模式行为可以通过使用关于被追踪的每个缓存行数据存储的唯一/非唯一标记(和存储在探听过滤器电路14和共享缓存电路16内的标记值)形式的唯一状态数据来追踪。当根据非包含操作模式来存储缓存行时,那么唯一状态数据将指示仅存储此缓存行数据的单个拷贝。当将缓存行数据保持在包含操作模式下时,那么唯一状态数据将指示如此。图2示意性地图示了共享高速缓冲存储器16。这包括缓存阵列20和缓存控制器22。缓存阵列20内的每个缓存行24存储针对所述缓存行24的共享缓存标签值、缓存行数据的有效载荷以及相关联的唯一状态数据(U/NU)和事务处理源标识数据(RNFID)。存储在共享高速缓冲存储器16内的RNFID指示事务处理源8、10中的哪个引起所述缓存行数据的填充出现在共享高速缓冲存储器中且因此“拥有”所述缓存行数据。如果唯一状态数据指示所述缓存行数据由多于一个本地高速缓冲存储器保持,那么RNFID字段变为无效,这是因为其将仅能标识单个事务处理源。这样导致的结果是,随后退却到广播探听请求,以识别在接收到事务处理时哪个本地高速缓冲存储器在存储哪些缓存行数据。在一些实施例中,可能有更多资源能够专用于事务处理源标识数据,并且可以标识出多个事务处理源,直到存在的事务处理源总数目的适当子集。图3示意性地图示了探听过滤器电路14。探听过滤器电路14包括过滤器阵列26,该过滤器阵列存储探听过滤器标签值以及相关联的唯一状态数据和事务处理源标识数据。探听过滤器控制器28控制探听过滤器14的操作。探听过滤器标签值指示标签值(在主存储器6内从其读取缓存数据值的存储地址的一部分)以及唯一状态数据,该唯一状态数据指示是否为了多个本地高速缓冲存储器而保持缓存行数据的拷贝。当单个本地高速缓冲存储器正在存储所述缓存行数据时,事务处理源标识数据(RNFID)标识存储与探听过滤器标签值相对应的缓存行数据的事务处理源。当多个本地高速缓冲存储器正在存储缓存行数据时,那么事务处理源标识数据可能不具有足够的容量来分别标识这些并且相应地变为无效,从而需要执行广播探听操作。图4示意性地图示了探听过滤器电路14和共享高速缓冲存储器16响应于从基于环的互连12接收到的事务处理读取请求的行为。探听过滤器电路14和共享高速缓冲存储器16作为互锁并行管线执行,以发起并行标签查找。探听过滤器电路14和共享高速缓冲存储器16二者随后均返回命中或未命中指示。如果由探听过滤器电路14返回命中,那么返回事务处理源标识符以标识与该命中相对应的本地高速缓冲存储器(至少当仅单个本地高速缓冲存储器正在存储目标缓存行数据时)。如果由探听过滤器电路14返回命中,那么标识出的事务处理源进行向该事务处理提供服务。如果由共享高速缓冲存储器16返回命中,那么共享高速缓冲存储器进行向接收到的事务处理提供服务。如果探听过滤器电路14和共享高速缓冲存储器16二者均命中,那么二者均向接收到的事务处理提供服务。如果从探听过滤器电路14和共享高速缓冲存储器16二者均返回未命中,那么将事务处理转发到存储器控制器18,存储器控制器18发起主存储器事务处理,以从主存储器6提取目标缓存行数据并将其存储到如先前所述的请求事务处理源的本地高速缓冲存储器中。图5示意性地图示了根据由探听过滤器电路14存储的探听过滤器标签值和由共享高速缓冲存储器16存储的共享缓存标签值来执行的原子(atomic)标签维护操作。作为动作A,首先响应于来自主存储器的载入将标签值存储为探听过滤器标签值。在这个阶段,缓存行数据被存储到请求事务处理源的本地高速缓冲存储器中并且未存储在共享高速缓冲存储器16内。如果本地高速缓冲存储器用尽了空间,那么其可以驱逐此缓存行数据并将其移动到存储在共享高速缓冲存储器16内。此时,标签值被从作为探听过滤器标签值存储在探听过滤器电路14内移动到作为共享缓存标签值存储在共享缓存电路16内,如由动作B所指示。随后可以将所述缓存行数据从共享高速缓冲存储器16召回到一个本地高速缓冲存储器,并且此时标签被从作为共享缓存标签值存储在共享标签高速缓冲存储器16内移动到作为探听过滤器标签值存储在探听过滤器电路14内,如由动作C所指示。如上所述,在某些情况下可能将缓存行从存储在非包含模式下切换到存储在包含模式下。当出现这些情况时,动作D指示如何在探听过滤器电路14与共享高速缓冲存储器16之间复制标签值而不将其从其原始位置去除。这导致相同的标签值被作为探听过滤器标签值存储在探听过滤器电路14内并作为共享缓存标签值存储在共享高速缓冲存储器16内。这由动作D所图示。片上系统集成电路4可以支持各类型的操作,如部分电源中断,在这些情况下,可能需要将本地高速缓冲存储器的内容刷新(flush)到共享高速缓冲存储器16。该缓存维护操作的执行如图5中的动作E所示,其需要将关于被关闭的本地高速缓冲存储器的所有探听过滤器标签值移动到共享高速缓冲存储器16以伴随被刷新到共享高速缓冲存储器16的缓存行数据。如上所述,图5中图示的作为标签维护操作的动作A、B、C、D和E的操作是以原子方式执行。这意味着,如果需要多步骤,那么这些步骤被作为单个实体来处理,并且将始终在开始后被完成(即,即使中断操作,也看不见中间状态)。尽管在本文中已经参照附图详细描述了本发明的说明性实施例,但是应理解,本发明并不限于那些精确的实施例,并且本领域的技术人员可实现各种改变和修改而不会脱离本发明的由所附权利要求书限定的范围和精神。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1