用于操作虚拟索引的物理标记的缓存的装置及方法与流程

文档序号:11519535阅读:258来源:国知局
用于操作虚拟索引的物理标记的缓存的装置及方法与流程

本发明系关于一种用于操作虚拟索引的物理标记的缓存的装置及方法。



背景技术:

当使用这样的缓存时,使用虚拟地址标识缓存内的多个条目(这多个条目通常称为n路组关联缓存(setassociativecache)内的组(set)),然后对应的物理地址被用于通过比较物理地址的相关部分与标识的缓存条目存储器储的物理地址标签值来确定是否发生命中或未中。此方法允许缓存查找操作与地址转换并行地开始,其中仅在一旦已执行标签阵列查找时需要物理地址用于命中/未中确定。

然而,可产生的潜在问题作为混叠的结果发生。具体地,当将不同虚拟地址映射至相同物理地址时发生混叠。尽管此举可为受允许行为且本身可不具有负面影响,但存在以下情形:它可导致关于虚拟索引的物理标记的缓存的复杂化。具体地,相同物理地址的不同虚拟地址可标识缓存内的不同组。如此可导致缓存内的复制,减小缓存的有效大小,且由于缓存中的多个不同条目需要具有相同值的事实,亦可引发一致性问题。

当采用虚拟索引的物理标记的缓存时,将需要减小混叠的潜在不利效应。



技术实现要素:

在第一示例性配置中,提供一种装置,此装置包括:处理电路,用以对数据执行数据处理操作;缓存存储设备,用以存储数据以便由处理电路存取,缓存存储设备具有多个缓存条目,且每个缓存条目被配置以存储数据及关联物理地址部分,使用虚拟地址的虚拟地址部分存取缓存存储设备以便识别数个缓存条目,此等缓存条目的存储物理地址部分将与源自虚拟地址的物理地址比较以便检测是否存在命中状况;以及监听请求处理电路,响应于指定物理地址的监听请求,确定该物理地址的多个可能虚拟地址部分,及执行监听处理操作以便在使用多个可能虚拟地址部分存取缓存存储设备时确定对于缓存条目是否检测到命中状况,并且在检测到命中状况后,关于引发命中状况的缓存条目执行一致性动作。

在第二示例性配置中,提供操作装置的方法,此方法包括:使用处理电路对数据执行数据处理操作;使用缓存存储设备存储数据以便由处理电路存取,缓存存储设备具有多个缓存条目,每个缓存条目存储数据及关联物理地址部分;使用虚拟地址的虚拟地址部分存取缓存存储设备以便识别数个缓存条目;比较该识别的数个缓存条目的物理地址部分与源自虚拟地址的物理地址以便检测是否存在命中状况;以及响应于指定物理地址的监听请求,确定该物理地址的多个可能虚拟地址部分,及执行监听处理操作以便在使用多个可能虚拟地址部分存取缓存存储设备时确定对于缓存条目是否检测到命中状况,并且在检测到命中状况后,关于引发命中状况的缓存条目执行一致性动作。

在又一示例性配置中,提供一种装置,此装置包括:处理手段,用于对数据执行数据处理操作;缓存手段,用于存储数据以便由处理手段存取,缓存手段具有多个缓存条目手段,且每个缓存条目手段用于存储数据及关联物理地址部分,使用虚拟地址之虚拟地址部分存取缓存手段以便识别数个缓存条目手段,此等缓存条目手段的存储物理地址部分将与源自虚拟地址的物理地址比较以便检测是否存在命中状况;以及监听请求处理手段,用于响应于指定物理地址的监听请求,确定该物理地址的多个可能虚拟地址部分,及用于执行监听处理操作以便在使用多个可能虚拟地址部分存取缓存手段时确定对于缓存条目手段是否检测到命中状况,并且在检测到命中状况后,用于关于引发命中状况的缓存条目手段执行一致性动作。

附图说明

仅通过示例的方式,本技术将参照其在附图中示出的实施例进行进一步描述,其中:

图1是示意性地示出对于虚拟索引的物理标记的缓存会出现的混叠问题的图示;

图2示意性地示出根据一个实施例的如何访问虚拟索引的物理标记的缓存;

图3是示出根据一个实施例的系统的框图,其中各种核心可针对它们的本地缓存级中的至少一级使用虚拟索引的物理标记的缓存;

图4是更详细地图示根据一个实施例的与一级缓存相关联地提供的组件的框图;

图5是示出在一个实施例中执行的过程的流程图;

图6是示出根据一个实施例的图5的一般方法如何能够用于移除在缓存存储器在的混叠状况的流程图;

图7是示出根据一个实施例的对于未分配存储请求的处理的流程图;

图8示出根据一个实施例的图4的存储缓冲器与检查混叠表之间的关系;

图9a是示出在采用使用检查混叠表的实施例时如何处理可缓存的加载请求的流程图;

图9b是示出在采用使用检查混叠表的实施例时如何处理可缓存的存储请求的流程图;以及

图10是示出在一个实施例中可如何扩展监听状态机功能性以作为后台活动检测及移除混叠状况的流程图。

具体实施方式

在参照附图论述实施例之前,提供以下实施例描述。

如前文所述,混叠为许多系统中允许的行为,其中可藉由操作系统将不同虚拟地址映射至相同物理地址中。除非对缓存设置某些限制,否则此可在虚拟索引的物理标记的缓存中造成前文所论及的问题。具体地,在虚拟地址内通常存在一定数量的与物理地址中的对应位相同的位。在一个实施例中,此位数量取决于由架构支持的最小页面大小。若缓存经约束具有充分关联性以确保索引缓存所需的位数量保持在与虚拟地址与物理地址之间相同的位的数量之下,则此可用于确保任何混叠将不会引发缓存中的问题,因为映射至相同物理地址的多个虚拟地址可被配置以产生到缓存中的相同索引,并因此识别相同的集合。然而,将需要的是,不必对缓存设置此约束,且能够有效管理混叠的潜在问题,甚至在生成从虚拟地址到缓存中的索引所需的位数量大于在虚拟地址与物理地址两者中具有相同值的位数量的情形中亦如此。在此情况中,必要的是,索引的至少一部分是自虚拟地址特定位产生的,且这可引发前文论及的问题,其中缓存内不同集合中的缓存条目会潜在地存储与相同物理地址相关的数据。

在一个实施例中,此问题藉由利用监听机制的特性来减轻,可在数据处理系统内提供监听机制以管理缓存一致性。具体地,监听机制通常使用物理地址来操作,因此监听机制自身并不遭受此潜在混叠问题。

在一个实施例中,具有处理电路以对数据执行数据处理操作以及虚拟索引的物理标记的缓存存储设备以存储数据以便由处理电路访问的装置另外置有监听请求处理电路,该监听请求处理电路响应于由装置接收到的监听请求采取一系列步骤,该监听请求指定一物理地址。具体地,监听请求处理电路确定用于物理地址的多个可能的虚拟地址部分,虚拟地址部分是虚拟地址中用作索引以访问缓存存储设备的部分。监听请求处理电路随后执行监听处理操作以便确定在使用多个可能的虚拟地址部分访问的任何缓存条目中是否检测到命中。结果是,当被提供以指定物理地址的监听请求时,监听请求处理电路可被配置以检查所有各种可能的缓存条目,在此等缓存条目中可存储与该物理地址关联的数据。在检测到命中状况(即,检测到存储对于指定物理地址的数据的缓存条目)后,监听请求处理电路可被配置以关于此缓存条目执行一致性动作。所采取的一致性动作将通常取决于所发出的监听请求的类型。举例而言,一致性动作可涉及使缓存条目无效,以及若缓存条目当前标记为有效且污损,则执行任何需要的驱逐(eviction)处理;可涉及输出存储在缓存条目中的数据,使得该数据可被提供给负责发送监听请求的外部监听电路等。

在一个实施例中,情况将是,至多将关于一个缓存条目检测到命中状况。因此,在一个实施例中,监听请求处理电路被配置以在一旦已检测到命中状况及关于引发命中状况的缓存条目执行一致性动作后完成监听处理操作。因此,一旦已检测到命中状况,继续检查所有可能虚拟地址不是必要的。

在一个实施例中,由操作系统用以在存储器中映射页的算法用于影响监听处理操作期间检查的第一可能虚拟地址部分。在一个特定实施例中,将第一可能虚拟地址部分选定为这样的虚拟地址部分,其中虚拟地址特定位具有被设置为等于对应物理地址位值的值。已发现,对于此可能虚拟地址部分发现命中状况的几率增加,因此该方法可从统计学上减少执行监听处理操作中涉及的开销。

在一个实施例中,在所检测到的命中状况不存在的情况下,监听请求处理电路被配置以在一旦已使用多个可能的虚拟地址部分访问了缓存存储设备时将完成监听处理操作。因此,监听请求处理电路将继续使用每个可能的虚拟地址部分检查命中状况,直至检测到命中状况,或者已使用所有可能的虚拟地址部分。

在一个实施例中,虚拟地址部分包括第一子集位,这些位的值与物理地址中的对应位相等;和第二子集位,这些位是该虚拟地址特有的。在一个特定实施例中,第一子集位包括位的数量,此数量取决于最小页面大小。

在一个实施例中,使用上文描述的机制移除经由监听机制已识别为存在的混叠状况。具体地,装置还包括请求发出电路,此请求发出电路响应于缓存存储设备检测到对于使用指定第一虚拟地址的虚拟地址部分访问的各种缓存条目的未中状况,随后发出访问请求至缓存层级的较低阶层,该访问请求指定了自第一虚拟地址得出的第一物理地址。因此,在此情境中,基于请求数据时处理电路提供的虚拟地址,已确定数据并不存在于缓存中,因此已使用物理地址将请求传播至缓存层级的较低阶层上。然而,这可触发监听机制根据所提供物理地址检查哪些缓存可存储数据的复本。若确定检测到未中的缓存存储设备为一个基于所提供物理地址使监听机制相信保持数据的复本的缓存,则这指示混叠状况(即,所需数据可存储在缓存的不同集合内且因此当基于第一虚拟地址的虚拟地址部分执行查找时未定位到该数据的情形)。

因此,在这样的情形中,应了解,由监听请求处理电路接收到的监听请求是响应于外部监听电路指示第一物理地址的数据被存储在缓存存储设备中(从而指示上文论及的混叠状况)而生成的。在此情境中,监听请求处理电路的前文描述的操作(以及具体地,前述监听处理操作的性能)用来移除混叠状况。具体地,若数据确实存在于缓存中处于与经历基于第一虚拟地址的初始查找操作的该者不同的集合中的缓存条目中,则将检测到命中状况且可采取适当动作移除混叠状况。

还应注意,在一些实施例中,尽管监听请求指示混叠状况的存在,但是等到监听请求处理电路执行监听处理操作时可能实际上不存在混叠状况(例如由于某些竞赛状况),其中在由监听请求处理电路进行动作时,外部监听电路的信息实际上已过时。

存在可移除混叠状况的数个方式,但在一个实施例中,监听请求处理电路被配置以作为一致性动作执行无效化操作以使引发命中状况的缓存条目无效,以便藉由在缓存中使缓存条目无效来移除混叠状况,此缓存条目的存储数据与第一物理地址关联但是使用源自与第一虚拟地址不同的虚拟地址的虚拟地址部分进行访问的缓存条目。此无效化可包括在该缓存条目被标记为有效且污损的事件中自缓存驱逐存储数据。此后,未中状况的处理可以标准方式继续,导致最新请求的数据被存取。然而,若该过程导致用存取的数据填充缓存,则将确保该阶段处的缓存仅具有单个复本,因为采取上文论及的步骤移除混叠状况。

尽管上文描述的方法提供移除混叠状况的有效机制,但当处置称为非分配存储请求的特定类型的存储请求时,仍可产生问题。此非分配存储请求是这样的请求,此请求引发在缓存内执行查找以便确定缓存是否已存储特定地址的数据。若是,则参照缓存复本处理存储。然而,在检测到未中的情况中,将存储请求直接发送给缓存的下一阶层,且未实行任何分配至检测到未中的缓存中。此非分配存储请求在本文中亦称为写入串流存储请求。

可与此方法一起产生的问题是,若非分配存储请求使用与前一可缓存访问请求(该可缓存访问请求导致一缓存条目被填充于缓存中,但处于与基于非分配存储请求指定的虚拟地址访问的组不同的组中)使用的虚拟地址不同的虚拟地址,将在缓存中发生未中,并且随后非分配存储请求的处理将导致数据在缓存层级的较低阶层/存储器处更新。因此,存储在缓存中的原始数据随后将过时。若后续可缓存访问请求随后指定与导致填充缓存条目的原始访问请求相同的虚拟地址,则将在缓存中检测到命中,且因此存取过时数据。

在一个实施例中,经由装置内缓冲器电路的配设把与由处理电路发出的非分配存储请求关联的物理地址(针对其在缓存结构中检测到未中状况)分配给缓冲器条目来减轻此问题。因此,缓冲器电路提供该物理地址的临时记录,从而允许在需要时实行检查。进一步地,缓冲器电路被配置以响应于自外部监听电路的解除分配信号,使物理地址与缓冲器电路的缓冲器条目解除分配。因此,维持临时记录,直至自外部监听电路接收到解除分配信号时为止。

在一个实施例中,发送解除分配信号的时间将取决于情形而变化。具体地,在一个实施例中,监听请求处理电路被配置以在一旦已完成监听处理操作时发出响应信号至外部监听电路,且缓冲器电路被配置以在一旦外部监听电路已接收到该响应信号时自外部监听电路接收解除分配信号。因此,当已检测到混叠状况时,则只要一旦监听请求处理电路执行了监听请求处理操作以便移除混叠状况,缓冲器电路将被配置以接收解除分配信号且因此自缓冲器电路移除相关物理地址。

进一步地,在一个实施例中,若外部监听电路确定物理地址的数据未存储在缓存结构中,则不需要发出监听请求至监听请求处理电路,且因此不需要执行监听处理操作。在该事件中,只要确定物理地址的数据未存储在缓存结构中,外部监听电路就可发出解除分配信号至缓冲器电路,且因此不存在混叠状况。

在一个实施例中,可将缓冲器电路并作用于缓冲待定存储请求的现有存储缓冲器电路的一部分。然而,在替代实施例中,缓冲器电路独立于此存储缓冲器电路,且自存储缓冲器电路移除非分配存储请求的处理触发缓冲器电路分配非分配存储请求的物理地址至它的一个缓冲器条目。此可提供一些效能及面积效率增益,因为此避免了在存储缓冲器电路中保持条目比本可需要的更长的需要。进一步地,需要在缓冲器电路中保留的信息量明显小于需要在存储缓冲器电路中保持的信息,因为基本上缓冲器电路仅需要保持物理地址使得可检查该物理地址。

在一个实施例中,可存在多个循环,其中在缓冲器电路与存储缓冲器电路两者中分配物理地址,因为至缓冲器电路中的分配发生在移除过程中的早期阶段,在实际上移除非分配存储请求之前。

在一个实施例中,在请求发出电路针对非分配存储请求发出指定物理地址的对应访问请求后,自存储缓冲器电路移除非分配存储请求,随后在缓存存储设备中检测到未中状况。因此,一旦将存储请求传播到缓存层级的下一阶层上,则在此点处可自存储缓冲器电路移除存储请求,及可将物理地址分配至缓冲器电路中。

在一个实施例中,装置还包括缓冲器检查电路,以便在一定条件下参考上文论及的缓冲器电路,以便检测潜在问题情况。具体地,在一个实施例中,缓冲器检查电路响应于由处理电路发出的可缓存访问请求(可为可缓存加载请求或可缓存存储请求),检查对于该可缓存访问请求的物理地址是否已分配给缓冲器电路的缓冲器条目。当确定该可缓存访问请求的物理地址已分配给缓冲器电路的缓冲器条目时,则认为存在未中状况,而不管使用与可缓存访问请求关联的虚拟地址部分对缓存存储设备的访问的结果。因此,对于可缓存访问请求,不论基于虚拟地址部分是否在缓存存储设备中检测到命中,若发现在缓冲器电路中分配对于该可缓存访问请求的物理地址,则在缓存中将访问视为未中。这防止处理电路潜在地在加载事件中自缓存获得过时数据,或在存储事件中在缓存中存储不正确数据。进一步地,前文描述的在未中事件中执行的处理将移除缓存存储器在的任何混叠状况。因此,可确保处理电路将处理正确数据且检测到及移除任何混叠状况。

在一个实施例中,可增强监听请求处理电路的前文所论及的操作以提供一些额外功能,且特定而言来监视缓冲器电路。在一个实施例中,监听请求处理电路响应于已被分配物理地址的缓冲器条目,确定该物理地址的多个可能虚拟地址部分,并在使用多个可能虚拟地址部分访问缓存存储设备时执行混叠移除操作以便确定对于缓存条目是否检测到命中状况。在检测到命中状况后,对引发命中状况的缓存条目执行无效化。因此,在此类实施例中,监听请求处理电路可主动设法移除潜在混叠状况,无需等待来自外部监听电路的特定监听请求。在一个实施例中,作为监听请求处理电路的后台任务执行混叠移除操作,且因此具有比响应于监听请求执行的监听处理操作低的优先权。

在另一示例性实施例中,可提供一种系统,此系统包括:具有缓存存储设备的多个处理单元,处理单元的至少一者包括根据上文所描述实施例的装置;及监听电路以实施关于多个处理单元的缓存存储设备的缓存一致性协议,监听电路被配置以发出监听请求至该装置的监听请求处理电路。

现将参照图示描述特定实施例。

图1为示意性图标对于虚拟索引的物理标记的缓存内可产生的混叠问题的图表。通常将虚拟地址10输入到转换后备缓冲器(tlb)30以便将虚拟地址转换成物理地址35。在允许混叠的系统中,操作系统可能将多个虚拟地址映射至相同物理地址。如图1所示,在此实例中,将一定数量的位25标识为位x-1至0,此等位在虚拟地址中具有与物理地址中的对应位相同的值。部分25中的位数量取决于存储器中所允许的最小页面大小。若用于识别待访问的缓存内的组所需的虚拟地址的索引部分可经约束单独常驻在部分25内,则可确保任何此混叠将不会导致缓存中的问题,因为所有对应于相同物理地址的不同虚拟地址将具有相同索引,且因此将访问相同的组。

然而,如图1所示,情况可以是,以此约束并不可能的方式组织缓存,且需要将额外虚拟地址特定索引位包括在虚拟地址的索引部分20内。因此,由于索引部分20内的虚拟地址特定索引位的存在,应将理解,在混叠存在的情况下,与相同物理地址相关的不同虚拟地址将可能引发访问缓存中的不同组,此将允许在缓存内保持相同数据的多个版本。此情境不仅减小了缓存的有效大小,而且增加了复杂性,因为需要在缓存内的数据的该等复本之间本地维持一致性。此后将描述的技术意欲提供用于识别及有效移除任何此类混叠状况的机制,在此类混叠状况中可能在缓存内保持相同数据的多个版本。

图1亦示出虚拟地址及物理地址内的各其他部分。具体地,虚拟地址10的偏移部分15用于标识所访问的缓存行(cacheline)内感兴趣的特定数据值,如稍后将参照图2更详细地论述。考虑到物理地址35,随后部分40标识物理地址的标签位,即,除位x-1至0(由最小页面大小调控且位的值与虚拟地址内的关联位相同)之外的物理地址的位。在虚拟索引的物理标记的缓存中,然后使用索引访问的每个缓存条目将存储物理地址标签位,此等物理地址标签位可随后与物理地址35的标签位部分40比较,以便检测是否存在命中(即,缓存条目中的标签位是否匹配该等物理地址标签位)。稍后将参照图2论述此过程。

藉由特定实例,若最小页面大小视为4kb(亦即,4千字节),则x=12,且因此虚拟地址位11至0将等于物理地址位11至0。在一个特定实例中,将位5至0用作偏移部分15。若缓存为64kb4路组关联缓存,则索引部分20需要8位,且在图1的示例性排列中,此将意谓索引部分20由虚拟地址位13至6形成,且因此具有两个虚拟地址特定位。

尽管在图1中虚拟地址特定索引位与由最小页面大小管控的索引部分的剩余位相连,但在其他实施例中,虚拟地址特定位可取自虚拟地址的其他部分,且因此将虚拟地址位13及12用作虚拟地址特定索引位的实例仅为实例。

进一步地,形成虚拟地址的位数量m可或可不与形成物理地址的位数量n不同,但在一个实施例中,m大于n。

图2示出在一个实施例中如何访问虚拟索引化的物理标记的缓存。缓存内的每个缓存条目系由标签阵列50中的一者中的标签条目70及对应数据阵列60内的数据值的对应缓存行75形成。使用虚拟地址10的索引部分20访问标签阵列50以便自标签阵列中的各者识别一个标签条目,对于缓存的各路提供标签阵列。所存取的标签条目群组称为组,如图2中的标号55所示。

应将了解,可在转换物理地址之前执行对标签阵列50的初始存取,因为仅需要来自虚拟地址10的索引部分20。然而,在虚拟索引化的物理标记的缓存中,每个标签条目70内保持的标签位实际上为物理地址位,且因此将需要物理地址以便检测缓存中是否已发生命中或未中。因此,与标签阵列50中的初始查找并行,可访问tlb30以便生成物理地址35以及因而物理地址的相关标签部分40(需要与从标签阵列中访问到的标签位进行比较)。如图2中示意性所示,每个标签条目可另外包括某些状态位,诸如指示数据的关联缓存行是否存储有效数据的有效位,及指示数据是否污损(亦即,比存储器中存储的数据更新)的污损位。当使用虚拟地址索引20访问标签阵列时,则将输出任何有效条目的各种标签位,如标号85示意性所示。此等可随后藉由比较区块80与物理地址标签部分40来比较。在检测到匹配的事件中,指示命中状况,这表示作为访问请求的主题的数据存储在数据阵列60中。

对于加载操作,可与标签阵列查找并行访问数据阵列60,以便访问组内的各种缓存行(由标号65所指示)。可随后输出缓存行中的数据(由标号90所指示),使得在命中事件中,选择电路系统95可随后选择对应于引发命中的标签条目的缓存行,其中来自虚拟地址的偏移位15用于标识特定数据值为访问的主题。可随后将该数据值自缓存输出回到发出具有虚拟地址的访问请求的处理电路。应将了解,存在存取命中缓存行内的特定所需数据值的多种方式,例如可使用多路复用器序列来标识所需数据值以便存取。

在存储访问请求为可缓存的事件中,并未与标签阵列存取并行存取数据阵列,而是先计算物理地址,及随后一旦处理电路内的加载/存储管线已确定可承诺存储操作(即,待写入到存储器的写入数据现安全写出到存储器),便在存储缓冲器内置放存储访问请求的条目。一旦已在存储缓冲器中存储写入访问请求以及物理地址,则可执行标签阵列内的查找,且在命中事件中,所指定的写入数据可用于更新缓存内的相关缓存行。此可在独有写入事件中直接发生,其中可确保不与另一核心共享数据。在非独有写入事件中,即使在缓存中存在命中,但将访问视为未中,以便调用外部监听电路使可在其他缓存中保持的数据的任何其他复本无效,此后可将数据写入到缓存中。

图3示出根据一个实施例的系统。为了便于说明,系统仅包括两个核心100、120,但可提供额外处理器核心,实际上可提供其他主设备,此等主设备可包括或可不包括自己的本地缓存。核心100具有各种处理器管线105,其中一者为用于处置加载及存储操作的加载/存储管线110。加载/存储管线110可藉由发出指定虚拟地址的访问请求来访问核心100内本地提供的一个或多个缓存阶一级15。核心120类似地构造有管线125,此等管线包括加载/存储管线130,此加载/存储管线可发出指定虚拟地址的访问请求至核心120内本地提供的一个或多个缓存阶一级35。在本文所描述的实施例中,将假设一个或多个缓存阶一级15、135包括经虚拟索引化及物理标记的一级数据缓存。进一步地,可在区块115、135内提供缓存的较低阶层,诸如本地二级缓存,此等缓存可例如经物理索引化及物理标记的。无论是否存在缓存的额外阶层,或仅一级缓存,在区块115、135中的各者中,在本地缓存阶层内的未中事件中,访问请求将与物理地址一起被传播至一致性互连140。一致性互连140包括监听电路155,此监听电路用于实施缓存一致性协议以便确保可由独立处理器核心的本地缓存保持的数据的各复本之间存在数据一致性。具体地,举例而言,重要的是,若处理器核心120在本地缓存135中具有数据值,此数据值比任何共享较低层级缓存阶一级45和/或存储器150中保持的数据更新,那么若处理器核心100需要对该数据进行存取及在本地缓存115中检测到未中,则可确保处理器核心100将存取最新数据。

监听电路155设法维持记录,此记录指示了解的哪个核心已缓存数据的复本,该记录保持跟踪数据的物理地址及认为已本地缓存该数据的核心。因此,在访问请求与物理地址一起自处理器核心中的一者传播的事件中,此访问请求在本文中亦称为线路利用请求,监听电路155可检查它的本地记录以查看在记录中是否标识了该物理地址,且若是,哪些处理器核心被指示为具有该数据的复本。随后可发出监听请求至相关(一个或多个)处理器核心以便引发每个此类处理器核心访问它的本地缓存以及关于数据的复本执行所需一致性动作。此可涉及使本地复本无效,和/或可涉及该处理器核心将数据的复本输出回到监听电路,使得可随后回传到请求处理器核心。举例而言,因此,应将了解,若在一个或多个缓存阶一级15中对于由处理器核心100产生的访问请求发生未中,且该地址处的数据的最新版本位于处理器核心120的本地缓存层级135中,此将藉由监听电路155检测,且经由监听请求可取回该数据及随后提供回到处理器核心100。

回到前文论及的可在虚拟索引化的物理标记的缓存内由混叠引发的潜在不利效应的问题,发明人已观察到,由于使用物理地址操作监听电路的事实,此混叠状况可藉由监听电路检测。具体地,举例而言,若处理器核心100在它的本地虚拟索引的物理标记的缓存中基于加载/存储管线110输出的虚拟地址执行查找,且导致未中,则若由监听电路接收到指定物理地址的后续线路利用请求,且监听电路的记录指示处理器核心100确实在该物理地址处存储数据的复本,此暗示混叠状况的存在。具体地,可能由于以下事实而产生不符:用于访问缓存的虚拟地址与用于用数据初始填充一级缓存的虚拟地址不同,且因此所需数据事实上仍处于缓存中,但处于与由现发出的指定虚拟地址可访问的组不同的组中。

在一个实施例中,在此情形下,监听电路155发出监听请求回到处理器核心100以使得它调用监听处理操作以便检测及移除任何此类混叠状况。此将参照图4更详细地论述。具体地,图4示出与一级数据缓存关联的数个组件200。一级缓存阵列205包括前文在图2中示出的标签阵列及数据阵列两者,在一级缓存控制电路210的控制下访问一级缓存阵列。亦在缓存控制电路的控制下访问tlb电路215,使得可在适当时间处执行虚拟/物理地址转换。然而,如前文所论述,可使用指定虚拟地址的索引部分发生标签阵列中的初始查找,且随后接着仅使用物理地址检测实际上是否存在命中状况。

根据所描述实施例,在一级缓存控制电路210内提供监听状态机220(在本文中亦称为监听请求处理电路),此监听状态机响应于前文论及的来自监听电路的监听请求,以便实施特定监听处理操作,使得检查任何混叠状况的存在。具体地,当监听电路155检测到(在它的本地缓存中的未中状况之后)发出线路利用请求的处理器核心在监听电路本身的记录中被指示为在指定物理地址处存储数据的复本时,将经由路径230发出监听请求回到该处理器核心,该请求指定应在一级缓存阵列内执行无效化操作。监听请求亦提供物理地址回到状态机220。

对于前文论述的理由,由于虚拟地址特定索引位的存在,将存在多个可能虚拟地址索引部分,此等可能虚拟地址索引部分可用于访问该指定的物理地址的缓存阵列。因此,监听状态机220被配置以迭代所有可能虚拟地址,且对于每个虚拟地址,在缓存阵列中执行查找以便确定是否存在命中。在检测到命中状况不存在的情况下,监听状态电路系统接着迭代每个可能虚拟地址。然而,一检测到命中状况,就可使命中的条目无效,并可在该点处终止监听处理操作。一旦检测到命中的条目且使得无效,或已尝试所有可能虚拟地址且未检测到命中,监听状态机220将随后经由路径235发出监听响应回到监听电路155。

图4亦示出其他组件,此等组件将在后续图示中更详细地论述。如图所示,当一级缓存控制电路210响应于来自加载/存储管线的访问请求在一级缓存阵列205中执行查找,并检测到未中时,将经由路径212发出线路利用请求,此将随后触发监听电路155确定任何其他处理器核心是否可存储数据,并根据需要启动监听请求。若在其他处理器核心中的一者的本地缓存中发现所需数据,则监听电路可经由路径214作为线路利用数据回传该数据。若在其他本地缓存中的任何者中未发现该数据,则可根据需要将请求传播至可选其它缓存阶层145和/或存储器150以便存取相关数据,随后经由路径214作为线路利用数据提供此数据。

若来自加载/存储管线的访问请求为加载访问请求,且该请求是可缓存的,则可在命中状况的事件中直接自缓存阵列205获得数据,或在经由路径214作为线路利用数据接收该数据时将数据自缓存控制电路210回传到处理器核心。在一个实施例中,若存储缓冲器中存在命中(即,待加载的数据为存储缓冲器中所标识的待定存储操作的主题),则可自存储缓冲器225返回数据。通常,返回的数据也将存储在一级缓存阵列内,使得随后若需要则对于后续存取可用。

对于存储访问请求,一旦已达到管线中的承诺阶段,加载/存储管线将仅发出存储访问请求,且因此可确保安全写入存储数据至存储器。在此点处,在存储缓冲器225内存储存储访问请求。稍后将参照图8论述存储缓冲器条目的内容,但除待写入的数据之外将亦包括物理地址,此物理地址将藉由tlb电路系统215自所供应虚拟地址确定。亦将包括索引所需的任何虚拟地址位以便访问缓存。

一旦已在存储缓冲器内填充条目,可藉由缓存控制电路210执行缓存阵列205内的查找。若存储操作为写入独有操作,且因此已知由相关处理器核心专门保持数据,则在检测到命中的事件中,可将数据直接写入到缓存阵列中。然而,在未中事件中,或若写入并非写入独有,则将经由路径212发出线路利用请求,此将引发监听电路执行任何所需一致性操作,以便使数据之任何其他本地复本无效。随后将经由路径214回传最新当前缓存行有价值的数据,因此可藉由将存储在存储缓冲器225的存储缓冲器条目内的新写入数据并入该缓存行中来将数据写入到缓存中。在此点处,可在存储缓冲器中使条目无效。

除可缓存存储请求之外,存储缓冲器亦可存储非可缓存存储请求。可经由路径240将此等非可缓存存储请求自存储缓冲器输出至缓存层级的较低阶层,以便引发数据被写入到该等较低缓存阶层中的一者中和/或至存储器。关于前文论及的混叠状况亦可存在问题的一种特定类型的非可缓存存储请求为非分配存储请求。当在存储缓冲器内置放非分配存储请求时,在一级缓存阵列205内执行查找以确定是否存在数据,且若是,用新写入数据更新相关缓存行。然而,在未中事件中,仅将写入数据传播至缓存层级的较低阶层上以存储在较低阶层内。然而,若作为前文论及的混叠问题的结果发生未中,且事实上一级缓存阵列确实存储相关物理地址的数据,但处于使用不同虚拟地址索引的组内,则存在以下潜在问题:若后续访问请求使用与原先引发数据分配至缓存中的该者相同的虚拟地址,将检测到缓存命中,且将存取错误数据。具体地,正确操作需要后面的访问存取由非分配存储请求更新的数据。如稍后将更详细地论述,可采取额外措施检测及处理此类情形,且在一个实施例中,此涉及使用检查混叠表(cat)245,此cat把关于以下非分配存储请求的物理地址信息保持某一时段,该非分配存储请求在缓存内未中且因此已自向前传播的存储缓冲器输出至缓存的较低层级阶层和/或存储器。

图5为示出在本地缓存结构中的缓存未中之后,在处理器核心100、120中的一者发出具有物理地址的线路利用请求至一致性互连140时执行的一般过程的流程图。在步骤300处,监听电路检查与缓存未中关联的物理地址,以确定该物理地址是否处于它的本地监听记录中;且因此在步骤305处,确定是否在记录中将任何核心标记为在本地缓存内的该物理地址处存储数据。若否,则过程行进至步骤310,且关于缓存一致性不需要任何进一步动作。如前文所论及,随后将藉由缓存层级的较低阶层和/或存储器处理线路利用请求。

若在步骤305处将任何核心标记为在本地缓存中存储数据,则在步骤315处,监听电路155发出监听请求至相关核心中的各者,指定物理地址。接收此监听请求的每个核心随后执行图5之剩余部分中图示的步骤。具体地,在步骤320处,监听状态机220由所提供的物理地址产生虚拟地址,此后在步骤325处,使用该虚拟地址在缓存阵列205内执行查找。随后,在步骤330处,确定是否检测到命中,且若否,则在步骤335处确定是否存在有待检查之任何更多虚拟地址。使用的不同虚拟地址部分的数量将取决于虚拟地址索引内的虚拟地址特定位的数量。在存在两个虚拟地址特定位的前文实例中,应将了解,将存在有待使用之四个可能的虚拟地址索引。若确定存在有待检查之更多虚拟地址,则过程行进至步骤340,其中操纵虚拟地址特定位以产生下一虚拟地址索引,此后过程返回至步骤325。

若在步骤330处检测到命中,则在步骤345处执行所需一致性动作。所需一致性动作将取决于监听电路发出给处理器的监听请求形式。如前文所论及,可仅需要使数据无效,或者可需要将数据返回至监听电路,使得该数据可转发至另一核心。一旦已采取所需一致性动作,则将响应发送给监听电路350。再次,响应将取决于自监听电路发送的监听请求类型,且因此可例如仅形成认可信号,此认可信号对监听电路识别已采取所需监听动作,或可另外包括监听电路的数据以路由至另一核心。

若在步骤335处确定无更多虚拟地址索引有待检查,则过程直接行进至步骤350,其中将响应发送给监听电路以指示核心已采取所有所需步骤。

在一个实施例中,在步骤320处选定的第一虚拟地址之选择可为任意的。然而,在一替代实施例中,由操作系统用以在存储器中映射页的算法可在步骤320处用于影响监听处理操作期间检查的第一可能虚拟地址部分。在一个特定实施例中,将第一可能虚拟地址部分选定为该虚拟地址部分,其中虚拟地址特定位具有经设置等于对应物理地址位值的值。已发现,对于该可能虚拟地址部分发现命中状况的几率增加,且因此此方法可从统计学上减少执行监听处理操作中涉及的额外负担。

图6为图标对于特定实例发生的步骤序列之流程图,其中监听电路确定已指示在本地缓存中具有未中的处理器核心实际上由监听电路的记录识别为存储所需数据的复本。在步骤360处,当使用由加载/存储管线提供的虚拟地址执行查找时,核心x检测到未中。在步骤365处,随后作为线路利用请求将该未中传播至监听电路上,以及由tlb电路系统215确定的物理地址。在步骤370处,监听电路检测任何其他核心是否保持该物理地址的数据,并根据需要发出监听请求。此涉及标准监听活动,其中若监听电路检测到除核心x之外的其他核心中的任何者保持指定物理地址的数据,则将适宜监听请求发送给该等其他核心。

然而,另外,在步骤375处,确定监听电路是否已检测到,基于物理地址,该核心x在本地缓存中具有该物理地址的数据(亦即,存在前文所称之所谓的混叠状况)。若检测到,则在步骤380处,监听电路发出监听请求至核心x,在此实例中,监听请求指示若处理监听请求时检测到命中则需要无效化动作。

在步骤385处,监听状态机220随后使用参照图5之步骤320至350描述的机制执行一系列查找,过程继续,直至检测到命中,在此情况下使与该命中关联的缓存行无效以便移除混叠状况,或直至已检查所有可能虚拟地址且未检测到命中。此后一情形仍为可能的,即便是监听电路的记录指示核心x确实存储复本,由于例如竞争状况,此等竞争状况可在执行相关存取时监听记录信息实际上已过时且因此未检测到命中的情况下产生。

在步骤385之后,随后可在步骤390处以前文所论述的常见方式处置未中,导致数据存储在核心x之本地缓存中。然而,在此点处,混叠将不会是问题,因为在图6之步骤385处执行的过程将已移除任何其他复本,且因此可确保在缓存中将仅存在数据之一个复本。

若在步骤375处监听电路未检测到核心x在本地缓存中具有数据的复本,则可跳过步骤380及385,及过程直接行进至步骤390。

图7为图示在处理器核心中的一者的缓存中的未中事件中如何处置非分配存储的流程图。如前文关于图4所论述,一旦自处理器核心之加载/存储管线发出,将存储访问请求置入存储缓冲器225中。在步骤400处,在此实例中执行及假设l1缓存阵列205内的查找,导致缓存中的未中。在步骤405处,在核心之本地缓冲器中保持用于存储的物理地址信息。尽管在一个实施例中此本地缓冲器本身可为存储缓冲器225,但存储缓冲器资源因通常保持在存储缓冲器条目内的信息量而相对高昂,且因此在一个实施例中,使用前文论及的cat245形式的独立本地缓冲器。具体地,一旦已在缓存中检测到未中,则将自存储缓冲器经由路径240输出非分配存储。在一个实施例中,此过程中可涉及数个独立信号。具体地,在一个实施例中,存储缓冲器将输出请求,且在接收到该请求的认可后,随后将输出写入数据。在此点处,将清除存储缓冲器条目225。在一个实施例中,在此点处,用于该存储的物理地址信息随后分配cat245内的条目,因此实施步骤405。

如步骤410所指示,自存储缓冲器的存储请求的输出基本上引发未中与物理地址一起被传播至监听电路。因此,在步骤415处,监听电路检测任何其他核心是否保持数据,并根据需要发出监听请求。另外,亦将检查记录是否指示核心x本身具有数据的复本,由确定框420所指示。具体地,若监听电路基于物理地址检测到核心x在本地缓存中具有该物理地址的数据(亦即,存在混叠状况),则过程行进至步骤425,其中监听电路发出监听请求至核心x。步骤430随后等效于前文参照图6所论述的步骤385,且藉由在使用指定物理地址的虚拟地址之可能序列执行监听处理操作时使任何导致命中状况的条目无效来引发监听状态机移除混叠状况(若事实上存在)。

在完成监听处理操作后,监听状态机将发送回应至监听电路,如前文参照图5之步骤350所论述。在此点处,监听电路将随后发送完成信号至核心x,如步骤435所指示,且接收到完成信号后,在步骤445处将本地缓冲器条目解除分配。当本地缓冲器采取前文所论述的cat245形式时,则此解除分配信号如图4中的虚线250所示。在步骤445之后,随后在步骤450处正常完成非分配存储。如参照步骤430所论述的前文动作将确保解决任何潜在混叠问题,因为非分配存储之主题的数据将在一级缓存阵列(若存在)内无效。

如图7所示,若监听电路不认为核心x在指定物理地址处具有数据,则在步骤440处,发出非混叠回应至核心x,从而允许随后在步骤445处将本地缓冲器条目解除分配。亦将经由图4所示之路径250提供此非混叠响应信号。

图8示意性图标存储缓冲器条目500与同等cat条目530之间的差异。存储缓冲器条目存储物理地址510,以及待存储的数据515。另外,可保持指示存储操作之状态的各种状态位520。进一步地,如图8所示,将存储索引所需的虚拟地址位505。根据前文论及的实例,此将为虚拟地址的位13及12。需要保持此等位,使得可执行一级缓存阵列205内的查找。

当将存储缓冲器条目内的存储请求发出至缓存层级的较低阶层,且因此与存储缓冲器解除分配时,则如前文所论述,将物理地址信息分配至cat245内的条目530中。cat条目仅需要保持物理地址535,以及一些描述的旗标来识别cat条目是否存储有效物理地址。在一个实施例中,使用有效位540,当将物理地址分配至cat条目中时设置此有效位,及当自监听电路经由路径250接收到信号后稍后将cat条目解除分配时清除此有效位。藉由将cat245用作与存储缓冲器225分离的缓冲器,此避免在存储缓冲器条目500内保持存储存取信息比所需长久的需要。此为有益的,因为自图8应将了解,当与cat条目530相比较时,存储缓冲器条目500在面积需求方面相对高昂。若实情为在接收到解除分配信号之前一直保持存储缓冲器条目,则此可藉由防止新存储被发出至存储缓冲器中而影响执行。藉由使用独立cat条目,可以常见方式操作存储缓冲器,且相对便宜的cat条目可用于跟踪缓存中未中的非分配存储的物理地址,直至可证实不存在混叠状况时。

图9a为图示在处置可缓存加载请求时如何使用cat的流程图。在步骤550处,确定存储缓冲器中是否存在命中,且若是,则在步骤555处确定由加载请求指定的所有所需数据是否皆自存储缓冲器可用。若是,则在步骤560处自存储缓冲器获得数据。然而,若在步骤550处未检测到命中,或在步骤555处确定并非所有所需数据在存储缓冲器中可用,则过程行进至步骤565,其中确定缓存中是否存在命中。

若缓存不存在命中,则在步骤580处将加载请求处理为未中。随后将回传数据提供给处理器,且如步骤585所指示,藉由处理缓存未中获得的数据可与步骤550处自存储缓冲器获得的任何命中数据合并。

然而,若缓存中存在命中,则在步骤570处确定cat中是否亦存在命中。若否,则过程行进至步骤575,其中自缓存获得数据,及随后若发现所需数据中的一些存在于存储缓冲器中,则视情况经历步骤585。然而,若cat中存在命中,则在步骤565处检测到的缓存中的命中实际上不予处理,且实情为在步骤580处将加载请求处理为未中。

尽管图9a逻辑上图标确定过程,但应将了解,不一定按照图9a图示之次序执行各种检查。举例而言,缓存查找可与关于cat的内容的任何检查并行行进,且特定而言可使用虚拟地址索引化缓存,同时藉由tlb计算物理地址,及随后当物理地址为可用时,可执行cat中的检查。若需要,此可与物理地址标签位与基于虚拟索引的缓存存储器取的条目的标签位的比较并行执行。

访问请求之以下样本序列将用于论证图9a的过程为何防止因混叠造成的任何不正确操作:

(1)加载@pa,@va

(2)串流存储@pa,@va_2

(3)加载@pa,@va

根据此实例,三个指令存取相同物理地址,但加载(1)及(3)亦具有相同虚拟地址,而串流存储(2)使用不同虚拟地址。若假设加载(1)在缓存中命中及随后串流存储(2)因虚拟地址存取不同集合而未中,在此点处串流存储将留下核心及经发出至存储器的下一阶层。在适当时候,当藉由监听电路处理存储时,无效化监听请求将被发送给核心,且将执行前文描述的过程以移除无效线路。然而,可能的是,在接收到该无效化之前,将加载(3)发出至缓存控制电路;且因此当处理该查找时,将在缓存中检测到命中及将取回不正确的值。

然而,当合并上文描述的实施例的cat245时,加载(3)不可能具有错误数据,因为将确定在cat中对于该物理地址存在命中,且因此将如同在缓存内未中一样处理该加载(3),如图9a中的步骤570至步骤580的路径所指示。此将迫使加载(3)获得正确数据,亦即由串流存储写入的数据。

图9b为图示在如上文所描述的使用cat245时如何处置可缓存存储请求之流程图。在步骤600处,可缓存存储将被添加至存储缓冲器,作为新条目,或者与现有条目合并。然而,由于存储系可缓存存储,可并未与已处于与相同物理地址相关的存储缓冲器内的现有非可分配存储合并,且存储缓冲器被配置以确保在任何时间点处仅一个条目可存储与特定物理地址相关的待定存储请求。因此,在步骤600处将可缓存存储添加至存储缓冲器时,可确保对存储缓冲器中待定的该相同物理地址不存在待定的非可分配存储。

在步骤610处,确定缓存中是否存在命中。更特定而言,若可缓存存储为独有存储,且缓存中存在命中,则过程将行进至步骤630,其中将确定cat中是否存在命中。若cat中不存在命中,则在步骤640处,藉由更新相关缓存行将数据写入到缓存中。然而,若cat中存在命中,则过程行进至步骤620,其中藉由发出线路利用请求将存取处理为未中。在对于独有存储的缓存中未检测到命中的事件中,过程亦自步骤610直接行进至步骤620。

藉由在步骤630处添加额外检查,而非允许在步骤610处检测到命中以总是允许将数据写入到缓存640中,此防止将不正确更新缓存内的缓存行的可能性。具体地,藉由实情为在缓存中将存取视为未中,此将确保在发生由可缓存存储执行的更新之前处理非分配存储请求。因此,此确保正确操作,甚至在可缓存存储请求仅更新缓存行中的部分数据的情形下亦如此。

图10为图示可实行用于监听状态机220之功能性的可选扩展以便设法检测潜在混叠状况,及作为后台任务移除混叠状况的流程图。在步骤650处,监听状态机220确定cat245中是否存在任何待定条目。当确定存在至少一个待定条目时,则在655处,自此等待定cat条目中的一者读取物理地址。在多个待定条目事件中,随后可执行任何适宜选择过程,在一个实施例中随机选择条目。此后,在步骤660处,监听状态机220以与将用于前文参照图5之步骤320所论述的过程相同的方式自物理地址产生初始虚拟地址。

在步骤665处,则确定是否存在自由标签查找循环。若否,则等待过程。此归因于以下事实:图10中所描述之活动视为比需要处理的任何活动监听请求,或来自核心的需要在一级缓存阵列内执行查找的任何访问请求低的优先权。然而,每当存在自由标签查找循环时,过程将行进至步骤670,其中使用虚拟地址在缓存内执行查找。随后在步骤675处确定是否存在命中,且若否,则在步骤680处确定对于物理地址是否需要检查任何更多虚拟地址索引。若是,则过程行进至步骤685,其中操纵虚拟地址特定位以产生下一虚拟地址索引,此后过程返回至步骤665以等待另一自由标签查找循环以便测试下一虚拟地址索引。

若在步骤675处检测到命中,则在步骤690处使相关缓存条目无效,且过程行进至步骤695,其中现可将cat条目解除分配,因为已移除混叠状况。

类似地,若在步骤680处已检查所有虚拟地址索引且未检测到命中,则可证实不存在混叠状况且再次在步骤695处可将cat条目解除分配。在步骤695后,过程返回至步骤650以查看cat245中是否存在任何其他待定条目。藉由此方法,可能设法将潜在混叠状况解析为后台任务,无需等待后续可缓存访问请求触发过程来移除潜在混叠状况。

在本申请案中,用语「被配置以……」系用于意指装置之组件具有能够实施所定义操作的配置。在此上下文中,「配置」意指硬件或软件之互连的排列或方式。举例而言,装置可具有提供所定义操作的专用硬件,或处理器或其他处理装置可经程序化以执行功能。「被配置以」并不暗指装置组件需要以任何方式加以改变以便提供所定义操作。

尽管本文已参照随附图示详细描述本发明之说明性实施例,但应将理解,本发明不限于该等精确实施例,且本领域技术人员可在不脱离随附申请专利范围所定义之本发明之范畴及精神的情况下实行各种变化、添加及修改。举例而言,可在不脱离本发明的范畴的情况下利用独立权利要求的特征进行从属权利要求的特征的各种组合。

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