数据处理设备中对共享存储器的写访问请求的处理.pdf

上传人:小** 文档编号:1034222 上传时间:2018-03-27 格式:PDF 页数:29 大小:1.57MB
返回 下载 相关 举报
摘要
申请专利号:

CN200780038393.3

申请日:

2007.09.13

公开号:

CN101523361A

公开日:

2009.09.02

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效|||公开

IPC分类号:

G06F12/08

主分类号:

G06F12/08

申请人:

ARM有限公司

发明人:

F·C·M·皮里; P·J·-P·拉法伦; N·B·E·拉塔耶; S·D·比尔斯; R·R·格里森思怀特

地址:

英国剑桥郡

优先权:

2006.10.17 GB 0620609.8

专利代理机构:

中国专利代理(香港)有限公司

代理人:

柯广华;王忠忠

PDF下载: PDF下载
内容摘要

提供数据处理设备和方法用于处理对共享存储器的写访问请求。数据处理设备具有多个处理单元,用于执行要求对共享存储器中的数据的访问的数据处理操作,每个处理单元具有与其相关联的高速缓存以用于存储数据的子集以供该处理单元访问。提供了采用高速缓存一致性协议的高速缓存一致性逻辑,以确保由每个处理单元访问的数据是最新的。每个处理单元将在输出用于存储在共享存储器中的数据值时发出写访问请求,并且在写访问请求是属于要求更新相关联的高速缓存和共享存储器两者的类型时,在高速缓存一致性逻辑内启动一致性操作。随后,执行有关与多个处理单元相关联的所有高速缓存的一致性操作以便确保在那些高速缓存中的数据保持一致,所述高速缓存包括与发出写访问请求的处理单元相关联的高速缓存。高速缓存一致性逻辑还可操作以将有关写访问请求的主题数据值的更新请求发出到共享存储器。此技术提供了用于确保此类写访问请求的行为正确的一种特别简单、有效的机制,而不影响引发处理单元及其相关联高速缓存的复杂性和访问时序。

权利要求书

1.  一种数据处理设备,包括:
多个处理单元,可操作以执行要求对共享存储器中的数据的访问的数据处理操作;
每个处理单元具有与其相关联的高速缓存,所述高速缓存可操作以存储所述数据的子集以供该处理单元访问;
高速缓存一致性逻辑,采用高速缓存一致性协议以确保由每个处理单元访问的数据是最新的;
每个处理单元可操作以在输出用于存储在所述共享存储器中的数据值时发出写访问请求,在所述写访问请求是属于要求更新所述相关联的高速缓存和所述共享存储器两者的类型时,在所述高速缓存一致性逻辑内启动一致性操作;
所述高速缓存一致性逻辑可操作以执行有关与所述多个处理单元相关联的高速缓存的一致性操作,所述高速缓存包括与发出所述写访问请求的处理单元相关联的高速缓存,以便确保在那些高速缓存中的数据保持一致;以及
所述高速缓存一致性逻辑还可操作以将有关所述写访问请求的主题数据值的更新请求发出到所述共享存储器。

2.
  如权利要求1所述的数据处理设备,其中在所述写访问请求是对所述共享存储器的不可高速缓存的写访问请求时,在所述高速缓存一致性逻辑内启动所述一致性操作。

3.
  如权利要求1所述的数据处理设备,其中在所述写访问请求是对所述共享存储器的通写写访问请求时,在所述高速缓存一致性逻辑内启动所述一致性操作。

4.
  如权利要求1到3的任一项所述的数据处理设备,其中在执行所述一致性操作时,所述高速缓存一致性逻辑向与所述多个处理单元相关联的每个高速缓存发出一致性请求信号,所述一致性请求信号标识与所述写访问请求的主题数据值相关联的地址。

5.
  如权利要求1到3的任一项所述的数据处理设备,其中在执行所述一致性操作时,所述高速缓存一致性逻辑可操作以应用过滤操作,确定将一致性请求发出到哪些高速缓存,并随后将一致性请求信号发出到所确定的高速缓存,所述一致性请求信号标识与所述写访问请求的主题数据值相关联的地址。

6.
  如以上权利要求任一项所述的数据处理设备,其中在所述写访问请求是属于要求更新所述相关联的高速缓存和所述共享存储器两者的类型时,在所述高速缓存一致性逻辑内启动所述一致性操作,而不在与发出该写访问请求的处理单元相关联的高速缓存中执行高速缓存查找。

7.
  如以上权利要求任一项所述的数据处理设备,其中对于每个处理单元,与其相关联的高速缓存是只与该处理单元相关联的本地高速缓存。

8.
  如以上权利要求任一项所述的数据处理设备,其中所述共享存储器是存储器的共享存储器区域。

9.
  如以上权利要求任一项所述的数据处理设备,其中所述多个处理单元的至少一个是处理器核。

10.
  如以上权利要求任一项所述的数据处理设备,其中所述高速缓存一致性协议是基于探听的高速缓存一致性协议。

11.
  一种用于在数据处理设备中使用的高速缓存一致性逻辑,所述数据处理设备具有用于执行要求对共享存储器中的数据的访问的数据处理操作的多个处理单元,每个处理单元具有与其相关联的高速缓存以用于存储所述数据的子集以供该处理单元访问,所述高速缓存一致性逻辑采用高速缓存一致性协议以确保由每个处理单元访问的数据是最新的,每个处理单元可操作以在输出用于存储在所述共享存储器中的数据值时发出写访问请求,在所述写访问请求是属于要求更新所述相关联的高速缓存和所述共享存储器两者的类型时,所述高速缓存一致性逻辑可操作以启动一致性操作;
所述高速缓存一致性逻辑可操作以执行有关与所述多个处理单元相关联的高速缓存的一致性操作,所述高速缓存包括与发出所述写访问请求的处理单元相关联的高速缓存,以便确保在那些高速缓存中的数据保持一致;以及
所述高速缓存一致性逻辑还可操作以将有关所述写访问请求的主题数据值的更新请求发出到所述共享存储器。

12.
  一种在数据处理设备中处理对共享存储器的写访问请求的方法,所述数据处理设备包括用于执行要求对所述共享存储器中的数据的访问的数据处理操作的多个处理单元,每个处理单元具有与其相关联的高速缓存以用于存储所述数据的子集以供该处理单元访问,所述方法包括以下步骤:
在输出用于存储在所述共享存储器中的数据值时,从处理单元发出写访问请求;
在所述写访问请求是属于要求更新所述相关联的高速缓存和所述共享存储器两者的类型时,在高速缓存一致性逻辑内启动一致性操作,所述高速缓存一致性逻辑采用高速缓存一致性协议以确保由每个处理单元访问的数据是最新的;
执行有关与所述多个处理单元相关联的高速缓存的一致性操作,所述高速缓存包括与发出所述写访问请求的处理单元相关联的高速缓存,以便确保在那些高速缓存中的数据保持一致;以及
将有关所述写访问请求的主题数据值的更新请求发出到所述共享存储器。

13.
  一种数据处理设备,包括:
多个处理部件,用于执行要求对共享存储器部件中的数据的访问的数据处理操作;
每个处理部件具有与其相关联的高速缓存以用于存储所述数据的子集以供该处理部件访问;
高速缓存一致性部件,用于采用高速缓存一致性协议以确保由每个处理部件访问的数据是最新的;
每个处理部件用于在输出用于存储在所述共享存储器部件中的数据值时发出写访问请求,在所述写访问请求是属于要求更新所述相关联的高速缓存部件和所述共享存储器部件两者的类型时,在所述高速缓存一致性部件内启动一致性操作;
所述高速缓存一致性部件用于执行有关与所述多个处理部件相关联的高速缓存部件的一致性操作,所述高速缓存部件包括与发出所述写访问请求的处理部件相关联的高速缓存部件,以便确保在那些高速缓存部件中的数据保持一致;以及
所述高速缓存一致性部件还用于将有关所述写访问请求的主题数据值的更新请求发出到所述共享存储器部件。

说明书

数据处理设备中对共享存储器的写访问请求的处理
技术领域
本发明涉及数据处理设备中对共享存储器的写访问请求的处理。
背景技术
提供多处理系统,其中例如处理器核的两个或更多处理单元共享对共享存储器的访问,这已为人所熟知。通过设置不同的处理器核并行运行各自的数据处理操作,此类系统一般用于得到更高的性能。提供此类多处理能力的已知数据处理系统包括IBM370系统和SPARC多处理系统。这些特殊的多处理系统是高性能系统,其中,几乎不关心功率效率和功率消耗,而主要目的是最大处理速度。
为进一步加快此类多处理系统内对数据的访问速度,为每个处理单元在其中提供其自己的本地高速缓存以存储保存在共享存储器中的数据的子集,这已为人所熟知。虽然这能加快对数据的访问数据,但它使数据一致性的问题变得复杂。具体而言,将理解,如果特定处理器执行有关在其本地高速缓存中保存的数据值的写操作,则该数据值将在高速缓存内本地更新,但可能不一定同时在共享存储器中也更新。具体而言,如果所述数据值涉及存储器的回写(write back)区域,则只有当随后从高速缓存清除该数据值时,高速缓存中的更新的数据值才会存储回共享存储器。
由于数据可与其它处理器共享,因此,重要的是确保那些处理器在寻求访问共享存储器中相关联的地址时将访问最新的数据。为确保这种情况发生,在多处理系统内采取高速缓存一致性协议以确保在特定处理器更新其本地高速缓存中保存的数据值时,将使得该最新的数据可用于随后请求访问该数据的任何其它处理器,这已为人所熟知。
根据一个典型的高速缓存一致性协议,处理器执行的某些访问将要求执行一致性操作。一致性操作将使通知发送到其它处理器,标识正在发生的访问类型和正在访问的地址。这将使那些其它处理器执行高速缓存一致性协议定义的某些动作,并且在一些情况下也可产生某些信息,这些信息从一个或多个那些处理器反馈回启动要求一致性操作的访问的处理器。通过此类技术,在各自本地高速缓存中保存的数据一致性得以维护,从而确保了每个处理器访问最新的数据。一个此类高速缓存一致性协议是“修改、独占、共享、无效”(MESI)高速缓存一致性协议。
如果能保证特定的数据段只由处理器之一独占使用,则在该处理器访问该数据时,将不要求一致性操作。然而,在典型的多处理系统中,多数数据在处理器之间共享,这是因为数据一般归类为共享数据,或者是因为多处理系统允许在处理器之间的进程迁移,或者实际上允许特定进程并行在多个处理器上运行,结果是即使专用于特定进程的数据也不能保证由特定处理器独占使用。
虽然高速缓存一致性协议的使用能用于确保每个处理单元访问最新的数据,但在具有多个处理单元共享存储器的系统内,仍有某些类型的访问的处理能变得极为复杂。例如,如果共享存储器的某个区域指定为通写(write through)区域,并且特定的处理单元对共享存储器的该通写区域发出写访问请求,则在与引发该写访问请求的该处理单元相关联的高速缓存中执行任何更新的同时,必须更新存储器。在多处理器系统中执行此类更新引入许多危害。要使得能够发生正确的行为,相关联本地高速缓存的高速缓存控制逻辑要求另外的逻辑以确保对高速缓存和共享存储器的更新原子地发生,但另外的逻辑将增大其复杂性的和/或在访问高速缓存中引入相当大的延迟。原子操作必须以整体执行而无任何介入的读或写操作,使得防止在更新操作进行的同时对相同数据位置进行任何其它读或写访问。
作为在处理对共享存储器的通写区域的写访问请求时能发生的危害类型的示例,考虑第一写在高速缓存中引起命中并且正由高速缓存一致性逻辑处理,因此在处理器核内保持未决的情况。在该处理在进行的同时,对与第一写相邻位置的第二写被发出。第一写仍在未决时处理第二写的标准方式是在适当时合并两次访问。大多数情况下这是为了节省功率(当一致性逻辑已经完成其工作时只会对高速缓存进行一次写)和提高性能(两次写的合并允许单个“时隙(slot)”用于两次存储器访问,因此为一些随后的存储器访问释放一些资源)。
然而,如果这些写的目标是某一可共享的存储器区域,则此合并不应进行,因为它可能导致第一写被一致性逻辑发出两次。在第一写已经被处理,并且存储器已更新时,第二写应仍由一致性逻辑处理以便至少更新存储器。由于两次写已合并在一起,因此,第二一致性动作(和第二存储器更新)实际上将由两次写的合并组成,并且因此第一写将对存储器重复进行。这违反了任何存储器排序模型,因而被禁止。
为防止这种双重写,第一方案在于增加一些逻辑(因此增加一定的复杂性)以防止此类合并。避免此复杂性增加的其它可能的方案在于即使在标准情况下也阻止此类合并发生对性能和功率消耗的影响。
给定由提供这种一致性通写写访问引入的另外复杂性和危害,提供具高速缓存一致功能的处理器的许多系统不太可能想要支持此类行为,并且因此一个选择是不允许对共享存储器进行通写写访问。然而,即使采取了此类主张,但仍有其它类型的访问引入类似的危害。具体而言,特定处理器或在该处理器上运行的特定进程可将共享存储器的某个区域指定为不可高速缓存的,并且可关于该不可高速缓存的区域执行写访问。可假设对于不可高速缓存的写访问,无需在高速缓存中执行任何查找。然而,如果处理器使用不可高速缓存的存储器区域,则这只意味着处理器本身不将与该不可高速缓存的区域有关的任何数据分配到高速缓存中。然而,包括也能够访问本地高速缓存的紧密耦合的协处理器等系统中的其它处理器,可具有不同的存储器视图,并且具体而言对于一个处理器视为不可高速缓存的区域,另一个处理器可能不将其视为不可高速缓存的。此外,不同的存储器映射可由在同一处理器内运行的不同进程使用,并且因此不可高速缓存的写访问请求的主题数据可能实际上驻留在高速缓存内。
结果,在处理对共享存储器的不可高速缓存的写访问时,一般必须在高速缓存中执行查找,并且结果能够理解必须处理的行为极其类似于更早所述一致性通写写访问。因此,即使决定不支持对共享存储器的一致性通写写访问,仍必须提供一些能力来处理不可高速缓存的共享写访问。然而,引入此类能力在引入的另外复杂性和/或产生的另外访问延迟方面代价极高,特别是在不可高速缓存的共享写访问在高速缓存中产生命中的实际可能性极低时,这是经常发生的。
因此,最好是提供一种更具成本效益的解决方案,以实现要求更新与引发处理单元相关联的高速缓存和共享存储器两者的类型的写访问请求的正确的行为。
发明内容
从第一方面来看,本发明提供一种数据处理设备,包括:多个处理单元,可操作以执行要求对共享存储器中的数据的访问的数据处理操作;每个处理单元具有与其相关联的高速缓存,高速缓存可操作以存储所述数据的子集以供该处理单元访问;高速缓存一致性逻辑,采用高速缓存一致性协议以确保由每个处理单元访问的数据是最新的;每个处理单元可操作以在输出用于存储在所述共享存储器中的数据值时发出写访问请求,在写访问请求是属于要求更新相关联的高速缓存和共享存储器两者的类型时,在高速缓存一致性逻辑内启动一致性操作;高速缓存一致性逻辑可操作以执行有关与多个处理单元相关联的高速缓存的一致性操作,所述高速缓存包括与发出写访问请求的处理单元相关联的高速缓存,以便确保在那些高速缓存中的数据保持一致;以及高速缓存一致性逻辑还可操作以将有关写访问请求的主题数据值的更新请求发出到所述共享存储器。
根据本发明,通过使用已经提供的高速缓存一致性逻辑,实现了有效处理要求更新相关联的高速缓存和共享存储器两者的类型的写访问请求的能力,以确保数据处理设备中与其它处理单元相关联的高速缓存中的数据保持最新。具体而言,在引发处理单元发出要求更新相关联的高速缓存和共享存储器两者的类型的写访问请求时,在一致性逻辑中启动一致性操作。除执行有关与系统内其它处理单元相关联的高速缓存的一致性操作的高速缓存一致性逻辑的惯常作业外,高速缓存一致性逻辑还执行有关与引发处理单元相关联的高速缓存的一致性操作,作为其结果,所有那些高速缓存中的数据变得一致。高速缓存一致性逻辑也设置成将有关写访问请求的主题数据值的更新请求发出到共享存储器,由此确保对共享存储器的所需更新发生。
作为此类方案的结果,引发处理单元能将写访问请求视为不要求高速缓存查找的写访问请求,并且高速缓存一致性逻辑转而设置成执行一致性操作,并且具体而言设置成在执行该一致性操作时包括与引发处理单元相关联的高速缓存。因此,通过实际上以原子方式执行高速缓存更新和存储器更新,这避免了在其它情况下引发处理单元与其相关联的高速缓存组合自己尝试和实现请求的行为时将发生的另外复杂性和/或高速缓存访问惩罚。相反,由于高速缓存一致性逻辑其性质将已经能够避免发生可能的危害,因此,它能够将高速缓存更新与所需的共享存储器更新分开,同时仍实现将由引发处理单元发起的原子更新产生的相同行为。
因此,本发明通过允许处理单元以简单的方式处理写访问请求,并调用高速缓存一致性逻辑的固有能力以为此类写访问实现所需行为,对需要更新相关联的高速缓存和共享存储器两者的情况下处理对共享存储器的写访问请求的问题提供了更精致和简单的解决方案。
存在各种类型的写访问请求可要求更新相关联的高速缓存和共享存储器两者。在一个实施例中,一种类型的此写访问请求是对共享存储器的不可高速缓存的写访问请求。备选地或附加地,能通过使用上述技术得到支持的另一类型的写访问请求是对共享存储器的通写写访问请求。
高速缓存一致性逻辑执行的一致性操作能采用多种形式。在一个实施例中,在执行高速缓存一致性操作时,高速缓存一致性逻辑将一致性请求信号发出到与多个处理单元相关联的每个高速缓存,一致性请求信号标识与写访问请求的主题数据值相关联的地址。因此,在此类实施例中,与各种处理单元相关联的所有高速缓存要进行一致性检查。然而,在备选实施例中,在执行一致性操作时,高速缓存一致性逻辑可操作以应用过滤操作,确定将一致性请求发出到哪些高速缓存,并随后将一致性请求信号发出到所确定的高速缓存,一致性请求信号标识与写访问请求的主题数据值相关联的地址。在此类实施例中,为高速缓存一致性逻辑提供了允许它过滤一致性请求的另外特性,并且具体而言,过滤操作一般将各种高速缓存的内容的一些认识考虑在内以便决定哪些高速缓存需要进行一致性检查。此类方案通过避免执行不必要的一致性检查而能产生功率节省。
根据本发明的实施例,当引发处理单元发出要求更新相关联的高速缓存和共享存储器两者的类型的写访问请求时,则在使高速缓存一致性逻辑启动一致性操作前,处理单元无需在高速缓存中执行查找。然而,在一些实施例中,由于其它原因,处理单元仍可选择执行高速缓存查找。然而,在本发明的一个特定实施例中,一致性操作在高速缓存一致性逻辑内启动而无需在与引发处理单元相关联的高速缓存中执行高速缓存查找。
与每个处理单元相关联的高速缓存可采用多种形式。具体而言,某些处理单元可共享此类高速缓存。然而,在一个实施例中,对待每个处理单元,与其相关联的高速缓存是只与该处理单元相关联的本地高速缓存。此类高速缓存一般称为一级高速缓存。
在一个实施例中,每个高速缓存提供为只用于存储数据值的数据高速缓存,并且单独的指令高速缓存一般将提供用于存储要由相关联处理单元运行的指令。然而,在备选实施例中,高速缓存能够是存储指令和数据两者的统一高速缓存。
共享存储器可采用多种形式,并且因此在一个实施例中,可以是其全部地址空间共享的特定存储器装置。然而,在备选实施例中,共享存储器是存储器的共享存储器区域,并且一般此类存储器也具有其它区域,这些区域具有与其相关联的不同属性,并因此例如可以归类为非共享的。存储器系统通常将由多个存储器装置组成,所有装置是一个或多个存储器区域或区的一部分。例如,位于地址0和有1024个字(1K字)宽的存储区可实际上在多个存储器装置中提供,例如在四个存储器装置M0到M3中提供。M0能设置成在位置0、4、8、12......存储数据,M1能设置成在位置1、5、9、13......存储数据,而不是让M0在位置0-255存储数据,M1在位置256到511存储数据等。
处理单元能采用多种形式,但在一个实施例中,那些处理单元至少之一是处理器核。虽然在一个实施例中,所有处理单元可以是处理器核,但在备选实施例中,一个或多个处理单元可采用其它装置的形式,例如,数字信号处理器(DSP)、硬件加速器等。
高速缓存一致性协议可采用多种形式,但在一个实施例中,高速缓存一致性协议是基于探听的高速缓存一致性协议。根据此类高速缓存一致性协议,系统中的每个处理装置(处理装置例如是单个处理单元,或者单个处理单元与其相关联的高速缓存的组合)可设置成探听在共享总线上发生的活动,并依据从中获得的信息执行任何所需的一致性动作。在此类实施例中,高速缓存一致性逻辑将一般视为由与每个处理装置相关联的多个分立元件形成。
从第二方面来看,本发明提供一种用于在数据处理设备中使用的高速缓存一致性逻辑,数据处理设备具有用于执行要求对共享存储器中的数据的访问的数据处理操作的多个处理单元,每个处理单元具有与其相关联的高速缓存以用于存储所述数据的子集以供该处理单元访问,高速缓存一致性逻辑采用高速缓存一致性协议以确保由每个处理单元访问的数据是最新的,每个处理单元可操作以在输出用于存储在所述共享存储器中的数据值时发出写访问请求,在写访问请求是属于要求更新相关联的高速缓存和共享存储器两者的类型时,高速缓存一致性逻辑可操作以启动一致性操作;高速缓存一致性逻辑可操作以执行有关与多个处理单元相关联的高速缓存的一致性操作,高速缓存包括与发出写访问请求的处理单元相关联的高速缓存,以便确保在那些高速缓存中的数据保持一致;以及高速缓存一致性逻辑还可操作以将有关写访问请求的主题数据值的更新请求发出到所述共享存储器。
从第三方面来看,本发明提供一种在数据处理设备中处理对共享存储器的写访问请求的方法,数据处理设备包括用于执行要求对所述共享存储器中的数据的访问的数据处理操作的多个处理单元,每个处理单元具有与其相关联的高速缓存以用于存储所述数据的子集以供该处理单元访问,所述方法包括以下步骤:在输出用于存储在所述共享存储器中的数据值时,从处理单元发出写访问请求;在写访问请求是属于要求更新相关联的高速缓存和共享存储器两者的类型时,在高速缓存一致性逻辑内启动一致性操作,高速缓存一致性逻辑采用高速缓存一致性协议以确保由每个处理单元访问的数据是最新的;执行有关与多个处理单元相关联的高速缓存的一致性操作,所述高速缓存包括与发出写访问请求的处理单元相关联的高速缓存,以便确保在那些高速缓存中的数据保持一致;以及将有关写访问请求的主题数据值的更新请求发出到所述共享存储器。
从第四方面来看,本发明提供一种数据处理设备,包括:多个处理部件,用于执行要求对共享存储器部件中的数据的访问的数据处理操作;每个处理部件具有与其相关联的高速缓存部件以用于存储所述数据的子集以供该处理部件访问;高速缓存一致性部件,用于采用高速缓存一致性协议以确保由每个处理部件访问的数据是最新的;每个处理部件用于在输出用于存储在共享存储器部件中的数据值时发出写访问请求,在写访问请求是属于要求更新相关联的高速缓存部件和共享存储器部件两者的类型时,在高速缓存一致性部件内启动一致性操作;高速缓存一致性部件用于执行有关与多个处理部件相关联的高速缓存部件的一致性操作,所述高速缓存部件包括与发出写访问请求的处理部件相关联的高速缓存部件,以便确保在那些高速缓存部件中的数据保持一致;以及高速缓存一致性部件还用于将有关写访问请求的主题数据值的更新请求发出到共享存储器部件。
附图说明
本发明将参照如附图所示的其实施例,只通过示例方式做进一步描述,其中:
图1A是根据本发明第一实施例的数据处理设备的框图;
图1B是根据本发明第二实施例的数据处理设备的框图;
图2是示意示出可在图1A和1B的数据处理设备内采用的高速缓存一致性协议的图;
图3是框图,更详细地示出根据本发明一个实施例在图1A和1B所示数据高速缓存内提供的组件;
图4是流程图,示出根据本发明一个实施例为处理写访问请求而执行的处理;以及
图5是根据本发明另一个实施例的数据处理设备的图。
具体实施方式
图1A是包括经一致总线结构(bus fabric)50与共享存储器区域60耦合的多个处理器20、30、40的数据处理设备10的框图。每个处理器20、30、40包括分别与相关联本地高速缓存24、34、44耦合的处理器核22、32、42,每个高速缓存用于存储在共享存储器60中保存的数据的子集以便加快相关联处理器对该数据的访问速度。在一个实施例中,每个高速缓存24、34、44是用于存储由相关联处理器核22、32、42使用的数据值的数据高速缓存,并且单独的指令高速缓存一般将提供(图1A中未示出)以用于缓存由处理器核要求的指令。
一致总线结构50由总线互连装置与高速缓存一致性逻辑组成,高速缓存一致性逻辑用于应用高速缓存一致性协议以便确保在各本地高速缓存24、34、44中保存的数据保持最新。具体而言,高速缓存一致性逻辑将确保当一个处理器更新其本地高速缓存中的数据时,与其它处理器相关联的高速缓存中该数据的任何副本将在那些本地高速缓存中适当地进行更新或者无效以确保一致性。在一个实施例中,使用的高速缓存一致性协议是MESI高速缓存一致性协议,这将在后面参照图2进行更详细的描述。
存储器60可完全形成为共享存储器,或备选地可视为由多个存储器区域组成,那些区域中至少一个区域是共享存储器区域,其中处理器20、30、40能存储可在那些处理器中共享的数据。
图1B是根据本发明第二实施例的数据处理设备100的框图。根据此实施例,高速缓存一致性逻辑不形成为一致总线结构的一部分,而是单独的高速缓存一致性逻辑126、136、146在每个处理器内提供,并且各个处理器经总线互连150与存储器60耦合。如同以前一样,每个处理器120、130、140包括耦合到相关联的本地数据高速缓存124、134、144的处理器核122、132、142。
根据图1B的实施例,每个高速缓存一致性逻辑设置成探听其它处理器出现在总线互连150上的活动,并基于作为此类探听的结果而接收的信息确定是否需要与相关联数据高速缓存有关的任何一致性操作,以便保持该数据高速缓存的内容一致。因此,通过示例,如果处理器核二132发出与数据高速缓存134中存储的数据值有关的写访问请求,产生该数据高速缓存中的相关高速缓存行的内容被更新,则高速缓存一致性逻辑136将发出通知到总线互连150上,以标识此更新在进行,并且其它处理器120、140中的每个高速缓存一致性逻辑单元126、146将观察到此通知,并执行有关相关联数据高速缓存124、144的任何所需一致性操作。在一个实施例中,这可涉及在数据也存储在相关联数据高速缓存中时使相关高速缓存行无效,或者备选地执行所需更新。当此类探听操作用于实现高速缓存一致性时,数据处理设备经常被称为采用基于探听的高速缓存一致性协议。正如前面所述图1A一样,在一个实施例中,采用的实际高速缓存一致性协议是MESI高速缓存一致性协议。
图2是示出称为MESI高速缓存一致性协议的特定类型高速缓存一致性协议的状态转换图,并且在一个实施例中,MESI高速缓存一致性协议在图1A或1B的数据处理设备10、100内使用。如图2所示,高速缓存的每个高速缓存行能够在四种状态之一中存在,即I(无效)状态、S(共享)状态、E(独占)状态或M(修改)状态。如果高速缓存行无效,则I状态存在,如果高速缓存行包含也在其它处理器的高速缓存中保存的数据,则S状态存在,如果高速缓存行包含不在其它处理器的高速缓存中保存的数据,则E状态存在,以及如果高速缓存行包含修改的数据,则M状态存在。
图2示出由于各种读或写操作而可发生的状态转换。本地读或写操作是高速缓存驻留其中的处理器发起的读或写操作,而远程读或写操作由在数据处理设备的其它处理器之一上进行的且由一致性请求标识的读或写操作产生。
从图2应注意到,多个读和写活动不要求执行任何一致性操作,但有一定数量的读和写操作确实要求执行一致性操作。具体而言,如果高速缓存驻留其中的处理器执行本地读操作,产生高速缓存未命中,则这将导致对高速缓存的特定高速缓存行执行行填充过程,并且高速缓存行的状态将随后从设有I比特更改为设有S或E比特。为了决定应设定S比特还是E比特,处理器需要对可能已经本地缓存在所讨论的地址的数据的任何其它处理器发起一致性操作,并在选择是否设定S比特或E比特前等待该一致性操作的结果。如果可能缓存在所讨论的地址的数据的其它处理器均未缓存该数据,则能够设定E比特,而其它情况下应设定S比特。应注意的是,如果设定E比特,而且另一处理器随后向其高速缓存执行有关该相同地址的数据的本地读,这将被其E比特之前已设定的高速缓存视为远程读,并且如图2所示将促使发生转换,使得E比特被清除,并且S比特被设定。
还如图2所示,本地写过程将产生高速缓存的高速缓存行中保存的数据值的更新,并且将相应地促使M比特被设定。如果M比特的设定是由于从设定的I比特(在高速缓存未命中之后是高速缓存行分配并随后是写操作的情况下)的转换或者从设定的S比特状态转换而发生,则同样地,需要由处理器发起一致性操作。在此情况下,该处理器无需从要进行一致性操作的处理器接收任何反馈,但那些处理器需要采取关于其自己的高速缓存的任何所需动作,其中写将被视为远程写过程。应注意的是,如果在其E比特设定的高速缓存行中发生本地写,则E比特能被清除,并且M比特被设定而不发起任何一致性操作,这是因为在执行写时,已知在该地址的数据未在任何其它处理器的高速缓存中缓存。
图3是框图,示出根据本发明的一个实施例在图1A和IB所示的每个数据高速缓存内提供的组件。数据高速缓存200经装载/存储单元(LSU)210与相关联处理器核耦合,并且设置成从该相关联处理器核接收读和写访问请求。如果发生读访问请求,则该访问请求能够直接转发到高速缓存阵列230以使得能够执行查找过程,以便确定请求的数据值是否在高速缓存阵列中,如果在高速缓存阵列中,则该数据值经LSU 210被路由回处理器核。如果高速缓存未命中,则行填充请求经总线接口250转发到总线互连逻辑,以促使包括关注数据值的高速缓存行的数据价值(worth of data)从存储器60被检索以便存储在高速缓存阵列230中,随后,所需的数据值经LSU 210返回到处理器核。
对于写访问请求,这些请求被转发到存储缓冲器220,随后从中对它们进行处理。具体而言,对于可高速缓存的访问请求,存储缓冲器可经路径222在高速缓存阵列230中启动查找,以确定写访问请求主题数据值是否在高速缓存阵列内,并且如果在高速缓存阵列内,则将在高速缓存阵列230的高速缓存行中执行更新。如果高速缓存未命中,则行填充过程将由存储缓冲器220经总线接口250调用,以促使高速缓存行的数据价值从存储器被检索以便存储在高速缓存阵列中,随后写更新能够在高速缓存阵列内进行。备选地,高速缓存行的数据价值从存储器接收到位于总线接口250内的行填充缓冲器中,写更新随后与行填充缓冲器中的该数据合并,并且数据行随后将在高速缓存阵列230中分配。
一致性处理程序240也提供用于从高速缓存一致性逻辑接收一致性请求,并随后发起有关高速缓存阵列230中相关行的所需一致性维护操作。一般情况下,从高速缓存一致性逻辑接收的一致性请求将标识发起一致性操作的访问类型和访问请求主题数据值的地址,以便使得一致性处理程序240能够标识相关数据值是否存储在高速缓存阵列230内,并且如果在高速缓存阵列内,则采取适当的动作(例如如前面参照图2关于MESI协议所示)。
如果作为一致性维护操作的结果,高速缓存行需要从高速缓存阵列230清除,则一致性处理程序240能够与总线接口250通信以便促使所需清除发生。
如前面所述,某些类型的写访问请求要求更新相关联高速缓存和共享存储器两者,此类访问请求的示例是不可高速缓存的写访问请求和通写写访问请求。如果此类访问请求要由相关处理器正确处理,则这将大大增大存储缓冲器220的复杂性,这是因为存储缓冲器将需要在共享存储器60中正在进行更新的同时维护其关于写访问请求主题数据值的记录,并且与存储器中更新同步在高速缓存阵列230中执行更新以便确保更新在共享存储器60和高速缓存阵列230中原子地进行。只有在此原子更新已发生后,存储缓冲器才能丢弃该记录,并继续处理另一个写请求。因此,不但涉及到另外的复杂性,而且在访问高速缓存阵列230方面会发生相当大的性能影响。通过在存储缓冲器内提供其它逻辑,将可能在存储器中正在进行更新的同时只锁定高速缓存阵列230中的相关高速缓存行(而不是整个高速缓存阵列230),但这将比在存储器中正在进行更新的同时仅仅阻止对高速缓存阵列的所有写访问请求更复杂。
然而,根据本发明的实施例,存储缓冲器220设置成将要求更新相关联高速缓存和共享存储器两者的类型的任何访问请求视为不要求有关高速缓存的任何动作,并因此不要求在高速缓存阵列230中进行任何查找以确定是否实际上存在命中或未命中。结果,在相关写访问请求由存储缓冲器处理时,它从存储缓冲器220传播到总线接口250,其结果是访问请求传播到总线互连上。高速缓存一致性逻辑也接收此请求,并且执行有关所有高速缓存24、34、44或124、134、144的一致性操作。重要的是,应注意此一致性操作的执行不但有关于即时写访问请求中未涉及的处理器的数据高速缓存,而且其执行涉及与引发写访问请求的处理器相关联的数据高速缓存。
因此,例如考虑图1A的实施例,如果处理器核22发出要求更新相关联高速缓存24和共享存储器60两者的类型的写访问请求,则该访问请求传播到一致总线结构50而不在数据高速缓存24中执行任何查找,并且高速缓存一致性逻辑转而执行有关每个数据高速缓存24、34、44的一致性操作。在一个实施例中,此类操作涉及向每个数据高速缓存24、34、44发出一致性请求,该一致性请求由每个此类数据高速缓存内的一致性处理程序240接收。之后,请求的一致性维护操作在每个数据高速缓存内执行。
在备选实施例中,高速缓存一致性逻辑包括另外的过滤逻辑,该逻辑使得一致性逻辑能为每个数据高速缓存确定一致性请求是否需要发出到该数据高速缓存的一致性处理程序240。此类过滤操作可涉及对有关每个数据高速缓存的内容的一些保留信息的参考,以便就有关是否存在执行高速缓存维护操作的任何需要做出确定。通过此类方案,可能去除相当大数量的一致性请求需要,并因此大大降低每个数据高速缓存内一致性处理程序240需要执行的一致性维护操作量,从而产生相当大的功率节省。
一致性处理程序240执行的一致性维护操作可采用多种形式。在一个实施例中,一致性处理程序240可在此类情况下设置成检测在高速缓存阵列中是否有命中,并且如果有命中,则使相关高速缓存行无效,采取在使该高速缓存行无效时适当的任何必须动作。备选地,一致性处理程序可设置成在高速缓存阵列产生命中的情况下用新数据值实际更新高速缓存行,并且在必要时更新与该高速缓存行相关联的相关一致性状态比特。
通过此方案,无需在数据高速缓存的存储缓冲器220内提供另外的逻辑,这是因为存储缓冲器只处理写访问请求,好像无需高速缓存访问一样,并且因此无需执行任何原子操作。相反,高速缓存一致性逻辑将处理相关数据高速缓存内的一致性,其中包括与引发处理器核相关联的数据高速缓存,并且将另外对存储器执行所需的更新。假设高速缓存一致性逻辑其性质能够检测并防止在进行存储器更新时可能发生的任何危害,则无需数据高速缓存更新和存储器更新原子地进行。实际上,在一个实施例中,数据高速缓存中的任何命中只产生在任何情况下的相关高速缓存行的无效。
图4是流程图,示出在处理写访问请求时根据一个实施例的图1A或图1B的数据处理设备10、100的操作。最初,在步骤300,由数据高速缓存确定是否需要写访问。因此,在相关联处理器核向数据高速缓存发出写访问请求时,这将在步骤300检测到,并且过程将继续到步骤305,在该步骤中确定访问是否针对可共享的存储器区域,以及访问类型是否要求更新高速缓存和存储器。如果为否,则数据高速缓存在步骤310执行其通常的写访问处理,随后过程返回到步骤300。正如从图2前面的说明将理解的一样,此类通常的写访问处理可涉及或不涉及将一致性请求发出到高速缓存一致性逻辑。
然而,假设在步骤305确定访问针对可共享的存储器区域,并且访问类型确实要求更新高速缓存和存储器,则过程继续到步骤315,在该步骤中,高速缓存发出一致性请求而不执行任何高速缓存查找。之后,在步骤320,例如通过在存储缓冲器内设定相关状态标志,将写指示为未决。之后,在步骤325高速缓存等待来自高速缓存一致性逻辑的确认。在收到确认前,写访问保持未决,但在收到确认时,例如通过清除存储缓冲器中的相关状态比特,写在步骤330被视为已完成,之后过程返回到步骤300。
此外,在步骤315发出一致性请求时,它被路由到高速缓存一致性逻辑,并且在步骤335确定高速缓存一致性逻辑是否准备好接收一致性请求。如果未准备好,则在步骤340引起延迟,之后,过程返回到步骤335。一旦高速缓存一致性逻辑准备好接收一致性请求,则在步骤345,高速缓存一致性逻辑将该一致性请求发出到包括引发处理器的一级高速缓存在内的所有一级高速缓存。
之后,在步骤350,每个高速缓存执行所需的一致性动作,并在该一致性动作完成时通知高速缓存一致性逻辑。在步骤355,一旦所有确认已接收,高速缓存一致性逻辑便将确认发送到引发处理器,在步骤325检测到此情况以促使相关写访问在步骤330被标记为已完成。此外,在步骤360中,高速缓存一致性逻辑将访问请求发出到存储器60以便促使更新存储器中的相关条目,之后,过程返回到步骤335。
将理解,虽然在一个实施例中,一旦所有所需高速缓存维护操作已由数据高速缓存执行,高速缓存一致性逻辑才将访问请求发出到存储器,但在备选实施例中,对存储器的访问请求可与有关数据高速缓存的正在进行的一致性动作并行发出。
应注意的是,本发明实施例的技术可应用到其中相关处理装置不是所有处理器核的系统,并且实际上,每个处理装置不必具有其自己的专用高速缓存。具体而言,只要系统内存在不在从引发处理装置到存储器的自然路径内的高速缓存,高速缓存一致性逻辑便将是相关的。
因此,图5提供为也可使用本发明上述技术的备选实施例的图示。在此实施例中,处理器420包括处理器核422和相关联一级数据高速缓存424,该高速缓存经一致总线结构450与硬件加速器430和数字信号处理器(DSP)440耦合,这些装置共享高速缓存445。另外,一致总线结构450经二级高速缓存455耦合到存储器60。正如图1A的实施例一样,一致总线结构450包括高速缓存一致性逻辑。
硬件加速器430可用于各种用途,并且因此作为示例可采用用于执行图形处理的图形引擎形式。DSP440将一般能够执行比硬件加速器更多变化的功能,并因此例如可用于执行话音过滤功能、运行图形算法等。
二级高速缓存455可存储数据以供任何处理装置420、430、440访问,但共享的高速缓存445虽然能够为硬件加速器430或DSP440存储数据,但不可由处理器420访问,即,它不是在从处理器420到存储器60的自然路径(即,通过一级数据高速缓存424、一致总线结构450和二级高速缓存455的路径)上的高速缓存。
在此类情况下,本发明实施例的技术仍能够采用,并因此作为示例在处理器核422发出要求在一级数据高速缓存424和存储器60两者中执行更新的类型的写访问请求时,它能够转为直接路由出到一致总线结构450而不在一级数据高速缓存424中执行查找。因此,一致性请求将由高速缓存一致性逻辑发出到一级数据高速缓存424和共享的高速缓存445,以促使执行所需的高速缓存维护操作,并且存储器更新将单独地经二级高速缓存455路由到存储器60。
从上面的说明中,将理解本发明的上述实施例提供了一种简单的实现,以便确保要求更新高速缓存和存储器两者的对共享的存储器的写访问的正确行为,而不会增大数据高速缓存逻辑的复杂性。这对在任何情况下可选择不支持对共享存储器的一致通写写访问,但仍需要具有正确处理不可高速缓存的共享写的能力的实施例特别有利,其中一般很少会在高速缓存中实际有命中,并且相应地在数据高速缓存逻辑内提供另外的电路被认为代价特别高。
在本发明之前,在不可高速缓存的共享写的情况下将必须在高速缓存中执行查找,并且在高速缓存命中的情况下,将必须随后向高速缓存一致性逻辑发出一致性请求以使数据处理设备中与其它处理器相关联的所有其它高速缓存进行所需的一致性操作。之后,将必须原子方式更新引发处理器的高速缓存和共享存储器,这引入了很多危害,并且因此如前面所述其实现不但成本很高,而且耗时。
然而,通过使用本发明实施例的技术,不必在引发处理器的高速缓存中执行查找,而是将一致性请求直接发出到高速缓存一致性逻辑,随后此一致性请求传播到系统中的所有处理器,包括引发请求的处理器。如果引发写访问请求的处理器在其高速缓存中有该数据,则它将通过采取适当的动作以确保一致性(例如,更新对应的高速缓存行或使其无效)来响应一致性请求,但这只是接收高速缓存一致性请求的任何数据高速缓存执行的标准处理的一部分。因此,除了使高速缓存一致性逻辑能够将一致性请求发出到将通常接收一致性请求的所有其它处理器,还发出到引发处理器之外,不需另外的复杂性。
在高速缓存一致性逻辑具有高级特性,使它可过滤一致性请求的实施例中,可以必须或无需将一致性请求转发到引发写访问请求的处理器,并且具体而言,如果高速缓存一致性逻辑知道该数据不在高速缓存中,则可以无需将请求转发到引发处理器。在使用本发明的实施例以提供用于处理不可高速缓存的共享写的正确行为时,设想在多数情况下在数据高速缓存中将决不会有命中,并且因此在高速缓存一致性逻辑内提供此类过滤器逻辑能够节省相当大的功率。
虽然特定的实施例在本文中已描述,但将理解,本发明并未限于此,并且其许多修改和添加可在本发明范围内进行。例如,在不脱离本发明范围的情况下,以下从属权利要求的特征可与独立权利要求的特征进行各种组合。

数据处理设备中对共享存储器的写访问请求的处理.pdf_第1页
第1页 / 共29页
数据处理设备中对共享存储器的写访问请求的处理.pdf_第2页
第2页 / 共29页
数据处理设备中对共享存储器的写访问请求的处理.pdf_第3页
第3页 / 共29页
点击查看更多>>
资源描述

《数据处理设备中对共享存储器的写访问请求的处理.pdf》由会员分享,可在线阅读,更多相关《数据处理设备中对共享存储器的写访问请求的处理.pdf(29页珍藏版)》请在专利查询网上搜索。

提供数据处理设备和方法用于处理对共享存储器的写访问请求。数据处理设备具有多个处理单元,用于执行要求对共享存储器中的数据的访问的数据处理操作,每个处理单元具有与其相关联的高速缓存以用于存储数据的子集以供该处理单元访问。提供了采用高速缓存一致性协议的高速缓存一致性逻辑,以确保由每个处理单元访问的数据是最新的。每个处理单元将在输出用于存储在共享存储器中的数据值时发出写访问请求,并且在写访问请求是属于要求。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1