原子地更新多处理器系统中的共享存储器的系统及方法
【专利摘要】公开了原子地更新多处理器系统中的共享存储器的系统及方法。一种操作多处理器系统的共享存储器的系统,包括:处理器核心集合和对应的核心本地高速缓存集合;I/O设备集合和对应的I/O设备本地高速缓存集合。在核心本地高速缓存、I/O设备本地高速缓存上执行读取和写入操作,并且由确保所述共享存储器被原子地更新的高速缓存一致性协议(CCP)来管辖所述共享存储器。
【专利说明】原子地更新多处理器系统中的共享存储器的系统及方法
【技术领域】
[0001] 本发明通常涉及多处理器系统,更具体地说,涉及用于原子地更新多处理器系统 中的共享存储器的系统及方法。
【背景技术】
[0002] 多处理器系统被用于需要大量数据处理的应用。这些系统包括并行处理若干指令 的多个处理器核心。多处理器系统可能包括若干输入/输出(I/O)设备,以接收输入数据和 指令,并提供输出数据。指令和数据被存储在处理器核心和I/O设备都可以访问的共享存 储器中。为了改进性能,多处理器系统配备了快速存储器芯片,用于实现高速缓存存储器, 其中高速缓存存储器访问时间比共享存储器访问时间少的相当多。每个处理器核心和I/O 设备存储数据和指令,其在处理周期中在本地高速缓存中具有被访问的高可能性。当处理 器核心和/或I/O设备所需的数据在其对应的高速缓存中是可用的时候,较慢的共享存储 器不被访问,这就减少了数据访问时间和总处理时间。
[0003] 具有用于处理器核心和I/O设备中每个的共享存储器和本地高速缓存存储器 的这种多处理器系统基于高速缓存一致性协议进行操作。高速缓存一致性协议(cache coherence protocol)确保共享操作对象值的变化以及时的方式在整个系统中传播。高速 缓存一致性协议也管辖由处理器核心和I/O设备在共享存储器上执行的读取/写入操作。 高速缓存一致性协议确保由写入器对共享存储器的更新对各自的读取器是可见。为了确保 这些更新是原子的,可以使用如同读取锁定和写入锁定的机制,来防止读取器访问瞬态数 据。通常,这是通过允许读取器或写入器在给定时刻访问共享存储器来实现的。
[0004] 然而,存在传统的锁定机制不能确保原子性的情况。例如,I/O设备可能不能定位 在关联高速缓存存储器中的有效数据,在此期间,根据高速缓存一致性协议,请求被重定向 到处理器核心的高速缓存存储器。然而,如果处理器核心处于更新其高速缓存的进程中,则 读取操作导致I/O设备被提供了瞬态数据,这可能导致由多处理器系生成的错误输出。
[0005] 因此,具有用于给多处理器系统的共享存储器提供原子更新的系统及方法将是有 利的,其防止I/O设备访问瞬态数据,减少处理周期的持续时间,并克服了用于更新多处理 器系统的共享存储器的传统系统及方法的上述局限性。
【专利附图】
【附图说明】
[0006] 当结合附图阅读的时候,本发明优选实施例的以下详细说明书将被更好的理解。 本发明通过举例的方式说明并没有被附图所限制,在附图中类似的参考符号表示相同的元 素。
[0007] 图1根据本发明的一个实施例,是多处理器系统的示意方框图;以及
[0008] 图2根据本发明的一个实施例,是用于操作多处理器系统的共享存储器的方法的 流程图。
【具体实施方式】
[0009] 附属权利要求的详细说明书旨在作为本发明当前优选实施例的说明书,而不旨在 表示本发明在其中被实施的唯一形式。应了解,相同或等价功能可能通过旨在包含在本发 明精神和范围内的不同的实施例来实现。
[0010] 在本发明的一个实施例中,提供了一种操作多处理器系统的共享存储器的方法。 所述多处理器系统包括:处理器核心集合和对应的核心本地高速缓存集合;以及,输入/输 出(I/O)设备集合和对应的I/O设备本地高速缓存集合。所述共享存储器在所述处理器核 心集合和所述I/O设备集合之间被共享。所述方法包括:由所述处理器核心集合的关联处 理器核心更新存储在所述核心本地高速缓存集合的核心本地高速缓存中的数据。在被所述 处理器核心更新之后,存储在所述核心本地高速缓存中的所述数据被发射到所述共享存储 器。在将存储在所述核心本地高速缓存中的所述数据发射到所述共享存储器之后,由所述 处理器核心将存储在所述I/O设备本地高速缓存集合的I/O设备本地高速缓存中的数据标 记为无效。由所述I/O设备集合的关联I/O设备访问所述I/O设备本地高速缓存。由所述 I/O设备确定存储在所述I/O设备本地高速缓存中的所述数据的有效性。当所述数据被确 定为有效的时候,读取存储在所述I/O设备本地高速缓存中的所述数据。当存储在所述I/O 设备本地高速缓存中的所述数据被确定为无效的时候,访问存储在所述共享存储器中的数 据。存储在所述共享存储器中的所述数据被所述I/O设备访问。
[0011] 在本发明的另一实施例中,提供了一种多处理器系统。所述多处理器系统包括: 共享存储器;连接到所述共享存储器的核心本地高速缓存集合;以及,连接到所述共享存 储器的输入/输出(I/O)设备本地高速缓存集合。所述I/O设备本地高速缓存集合将存储 在所述共享存储器中的数据接收并存储。所述多处理器系统还包括:连接到所述核心本地 高速缓存集合的处理器核心集合,用于更新存储在所述核心本地高速缓存集合中的所述数 据。而且,所述处理器核心集合的至少一个处理器核心与所述核心本地高速缓存集合的至 少一个核心本地高速缓存相关联。所述至少一个处理器核心锁定所述核心本地高速缓存, 同时更新存储在其中的所述数据,将存储在所述核心本地高速缓存中的所述数据发射到所 述共享存储器,以及,在将存储在所述核心本地高速缓存中的所述数据发射到所述共享存 储器之后,将存储在所述I/O设备本地高速缓存集合的I/O设备本地高速缓存中的数据标 记为无效。
[0012] 所述系统还包括连接到所述I/O设备本地高速缓存集合的I/O设备集合。至少一 个I/O设备与至少一个I/O设备本地高速缓存相关联。所述I/O设备确定存储在所述I/O 设备本地高速缓存中的所述数据的有效性。当所述数据被确定为有效的时候,读取存储在 所述I/O设备本地高速缓存中的所述数据,以及,当存储在所述I/O设备本地高速缓存中的 所述数据被确定为无效的时候,访问存储在所述共享存储器中的数据。
[0013] 本发明的多种实施例提供一种用于操作多处理器系统的共享存储器的系统及方 法。所述多处理器系统包括:具有对应核心本地高速缓存集合的处理器核心集合;以及,具 有对应组的I/O设备本地高速缓存的I/O设备集合。在核心本地高速缓存、I/O设备本地高 速缓存上执行读取和写入操作,并且所述共享存储器由高速缓存一致性协议(CCP)管理, 使得所述共享存储器被原子地更新。所述CCP确保只有I/O设备是能够对所述I/O设备本 地高速缓存集合执行读取操作的有效读取器。此外,所述CCP定义了高速缓存一致性域,用 于管理由所述I/O设备生成的读取访问请求。所述高速缓存一致性域仅仅包括所述I/O设 备、所述I/O设备本地高速缓存以及所述共享存储器。
[0014] 处理器核心更新在写入操作中存储在核心本地高速缓存中的数据,并且在更新所 述核心本地高速缓存之后,将更新的数据发射到所述共享存储器。在成功地将更新数据发 射到所述共享存储器之后,所述处理器核心也将存储在所述I/O设备本地高速缓存中的数 据标记为无效。当与I/O设备本地高速缓存相关联的I/O设备启动读取访问请求并不能定 位I/O设备本地高速缓存中的有效数据的时候,I/O设备被重定向到共享存储器,以用于定 位有效数据(除了 I/O设备本地高速缓存之外,共享存储器是高速缓存一致性域的唯一其 它组件)。当其仍然由处理器核心更新的时候,将读取访问请求重定向到核心本地高速缓 存而不是共享存储器增加了 I/O设备访问核心本地高速缓存的可能性,并且当其由处理器 核心更新的时候,访问核心本地高速缓存导致瞬态数据被提供给I/O设备。然而,在本发明 的多处理器系统中,只有当在核心本地高速缓存上完成处理器核心的写入操作,更新数据 才将被发射到共享存储器,因此,共享存储器接收到更新的有效数据。响应于I/O设备的重 定向读取访问请求,更新的有效数据随后被发射到I/O设备本地高速缓存。I/O设备从I/O 设备本地高速缓存读取更新数据。
[0015] 将核心本地高速缓存保留在高速缓存一致性域之外导致了 I/O设备的读取访问 请求被重定向到共享存储器,而不是核心本地高速缓存。这防止了 I/O设备被提供瞬态数 据,这接下来根除了由多处理器系统生成错误输出的任何可能性。由于CCP必需将更新数 据从核心本地高速缓存发射到共享存储器,因此共享存储器保持了最近的更新数据,所述 最近的更新数据基于读取访问请求被提供给I/O设备。
[0016] 现在参照图1,图1根据本发明的一个实施例,显示了多处理器系统100。多处理 器系统100包括多个处理器核心102 (其中一个被显示)、多个核心本地高速缓存104 (其中 一个被显示)、多个I/O设备106 (其中一个被显示)、多个I/O设备本地高速缓存108 (其 中一个被显示)以及共享存储器110。I/O设备的例子包括输入/输出存储器管理单元 (IOMMU)、模式匹配引擎、帧分类硬件等等。每个处理器核心102具有对应的I/O设备本地 高速缓存104并且每个I/O设备106具有对应的I/O设备本地高速缓存108。核心本地高 速缓存104和I/O设备本地高速缓存108被连接到共享存储器110。本领域所属技术人员 应了解,设备本地高速缓存存储器可能直接被连接到共享存储器110 (如图所示)或间接被 连接到共享存储器110,例如通过核心。
[0017] 处理器核心102并行处理由I/O设备106提供的指令。具有在处理周期被处理器 核心102和I/O设备106访问的高可能性的数据和指令从共享存储器110中被预取出,并 被存储在核心本地高速缓存104和I/O设备本地高速缓存108中。在本发明的一个实施 例中,I/O设备106从共享存储器110读取数据结构,并将其存储在I/O设备本地高速缓存 108中。I/O设备106随后应用存储在数据结构中的信息,以进行事务处理或工作处理。一 个示例数据结构是被IOMMU使用的I/O事务授权和转换表。正如本领域所属技术人员已知 的,该表包含针对每个I/O设备的条目,其中每个条目包含多个字。根据本发明,这些条目 可以被原子地更新。
[0018] 多个读取/写入操作在共享存储器110、核心本地高速缓存104和I/O设备本 地高速缓存108上进行。多种读取/写入操作是由CCP,即CoreNet? -致性结构来管 辖。例如,在一些实施例中,一致性域符合由Power体系结构?技术标准指定的一致性、 连贯性和高速缓存规则和事务顺序规则以及在CoreNet? -致性结构中使用的访问协议。 Power体系结构和Power, org字标以及Power和Power, org标识以及相关标志是由Power, org许可的商标和服务标志。Power体系结构?技术标准通常指与由IBM、Motorola(现 Freescale Semiconductor)和Apple Computer组织的指令集和架构有关的技术。CoreNet 是 Freescale Semiconductor, Inc 的商标。
[0019] 根据本发明的CCP,只有I/O设备106是能够对I/O设备本地高速缓存108执行读 取操作的有效读取器。而且,只有I/O设备本地高速缓存108和共享存储器110位于高速 缓存一致性域中。
[0020] 处理器核102更新在写入操作中存储在核心本地高速缓存104中的数据,以存 储/更新其中的一个或多个数据字。在写入操作中,处理器核心102锁定核心本地高速缓 存104,以便防止存储在其中的内容被在处理器核心102上运行的高速缓存替换算法清理 (flush)到共享存储器110。更新数据随后由处理器核心102发射到共享存储器110,并且 核心本地高速缓存104上的锁定被移除。在将更新数据成功存储到共享存储器110中之后, 处理器核心102将存储在/0设备本地高速缓存108中的数据标记为无效。
[0021] 而且,1/0设备106启动对1/0设备本地高速缓存108的读取访问请求,并确定存 储在其中的数据的有效性。由于存储在1/0设备本地高速缓存108中的数据被标记为无 效,因此读取访问请求被重定向到共享存储器110,该共享存储器110是高速缓存一致性域 的唯一其它组件(除了 1/0设备本地高速缓存108)。由于更新数据被成功地从核心本地高 速缓存104接收并存储在共享存储器110中,因此响应于重定向的读取访问请求,共享存储 器110将更新数据发射到1/0设备本地高速缓存108。更新数据被存储在1/0设备本地高 速缓存108中,并且此后被1/0设备106访问。
[0022] 现在参照图2,图2根据本发明一个实施例,显示了一种用于操作多处理器系统 100的共享存储器110的方法的流程图。
[0023] 在步骤202,存储在核心本地高速缓存104中的数据在写入操作中被处理器核心 102更新。在步骤204,当处理器核心102对核心本地高速缓存104执行写入操作的时候, 核心本地高速缓存104被处理器核心102锁定。核心本地高速缓存104的锁定防止了存储 在其中的内容被在处理器核心102上运行的高速缓存替换算法清理到共享存储器110。在 步骤206,在完成写入操作之后,处理器核心102发射存储在核心本地高速缓存104中的更 新数据,并且核心本地高速缓存104上的锁定被移除。在步骤208,处理器核心102将存储 在1/0设备本地高速缓存106中的数据标记为无效。在步骤210,1/0设备106访问1/0设 备本地高速缓存108,以对其执行读取访问。在步骤212,1/0设备106确定存储在1/0设备 本地高速缓存108中的数据的有效性。在步骤214,如果存储在1/0设备本地高速缓存108 中的数据被确定为是有效,则1/0设备106读取存储在其中的数据。在步骤216,如果存储 在1/0设备本地高速缓存108中的数据被确定为无效,那么读取访问请求被重定向到共享 存储器110,除了 1/0设备本地高速缓存108,共享存储器110是高速缓存一致性域的唯一 其它组件。共享存储器110将更新数据发射到1/0设备本地高速缓存108。在步骤218,1/ 0设备106读取存储在1/0设备本地高速缓存108中的更新数据。
[0024] 虽然本发明的各种实施例被说明和描述,很明显本发明并不仅仅限于这些实施 例。正如权利要求中所描述的,在不脱离本发明精神和范围的情况下,各种修改、变化、变 体、替代以及等同物对于本领域所属技术人员来说很明显。
【权利要求】
1. 一种用于操作多处理器系统的共享存储器的方法,所述多处理器系统包括:处理器 核心集合和对应的核心本地高速缓存集合;以及输入/输出I/O设备集合和对应的I/O设 备本地高速缓存集合,所述共享存储器在所述处理器核心集合和所述I/O设备集合之间被 共享,所述处理器核心集合包括至少一个处理器核心,以及所述I/O设备集合包括至少一 个I/O设备,所述方法包括: 由所述处理器核心集合的关联处理器核心来更新存储在所述核心本地高速缓存集合 的核心本地高速缓存中的数据; 在由所述处理器核心更新之后,将存储在所述核心本地高速缓存中的所述数据发射到 所述共享存储器; 在将存储在所述核心本地高速缓存中的所述数据发射到所述共享存储器之后,由所述 处理器核心将存储在所述I/O设备本地高速缓存集合的I/O设备本地高速缓存中的数据标 记为无效; 由所述I/O设备集合的关联I/O设备访问所述I/O设备本地高速缓存; 由所述I/O设备确定存储在所述I/O设备本地高速缓存中的所述数据的有效性; 当所述数据被确定为有效的时候,读取存储在所述I/O设备本地高速缓存中的所述数 据;以及 当存储在所述I/O设备本地高速缓存中的所述数据被确定为无效的时候,访问存储在 所述共享存储器中的数据,其中,存储在所述共享存储器中的所述数据由所述I/O设备访 问。
2. 根据权利要求1所述的方法,还包括:当所述核心本地高速缓存由所述处理器核心 更新的时候,由所述处理器核心锁定所述核心本地高速缓存。
3. 根据权利要求2所述的方法,其中,访问存储在所述共享存储器中的所述数据的步 骤还包括: 将存储在所述共享存储器中的所述数据发射到所述I/O设备本地高速缓存;以及 由所述I/O设备读取从所述共享存储器被发射到所述I/O设备本地高速缓存的所述数 据。
4. 根据权利要求3所述的方法,其中,所述多处理器系统根据与CoreNet?-致性结构 相关联的高速缓存一致性协议的集合进行操作。
5. 根据权利要求1所述的方法,其中,所述I/O设备集合包括下述中的至少一个:输入 /输出存储器管理单元(I0MMU)、模式匹配引擎、和帧分类硬件。
6. -种多处理器系统,包括: 共享存储器; 连接到所述共享存储器的核心本地高速缓存集合; 连接到所述共享存储器的输入/输出I/O设备本地高速缓存集合,用于将被存储在所 述共享存储器中的数据接收和存储; 连接到所述核心本地高速缓存集合的处理器核心集合,用于更新存储在所述核心本地 高速缓存集合中的所述数据,其中,至少一个处理器核心与所述核心本地高速缓存集合的 至少一个核心本地高速缓存相关联,其中,所述至少一个处理器核心锁定所述至少一个核 心本地高速缓存,同时更新存储在其中的所述数据;将存储在所述至少一个核心本地高速 缓存中的所述数据发射到所述共享存储器;以及,在将存储在所述至少一个核心本地高速 缓存中的所述数据发射到所述共享存储器之后,将存储在所述I/O设备本地高速缓存集合 的至少一个I/O设备本地高速缓存中的数据标记为无效;以及 连接到所述I/O设备本地高速缓存集合的I/O设备集合,其中,至少一个I/O设备与至 少一个I/O设备本地高速缓存相关联,其中,所述至少一个I/O设备确定存储在所述至少一 个I/O设备本地高速缓存中的所述数据的有效性;当所述数据被确定为有效的时候,读取 存储在所述至少一个I/O设备本地高速缓存中的所述数据;以及,当存储在所述至少一个 I/O设备本地高速缓存中的所述数据被确定为无效的时候,访问存储在所述共享存储器中 的所述数据。
7. 根据权利要求6所述的多处理器系统,其中,在接收到存储在所述核心本地高速缓 存中的所述数据之后,所述共享存储器将存储在其中的所述数据发射到所述至少一个I/O 设备本地高速缓存,其中,所述共享存储器基于从所述至少一个I/O设备接收的请求来发 射所述数据。
8. 根据权利要求8所述的多处理器系统,其中,所述至少一个I/O设备读取由所述共享 存储器发射到所述至少一个I/O设备本地高速缓存的所述数据。
9. 根据权利要求6所述的多处理器系统,其中,所述I/O设备集合包括下述中的至少一 个:输入/输出存储器管理单元(IOMMU)、模式匹配引擎帧分类硬件。
10. 根据权利要求6所述的多处理器系统,其中,所述多处理器系统根据与CoreNet? - 致性结构相关联的协议集合进行操作。
【文档编号】G06F12/08GK104281540SQ201410319129
【公开日】2015年1月14日 申请日期:2014年7月4日 优先权日:2013年7月4日
【发明者】瓦库尔·加尔, 瓦伦·塞西, 巴拉特·布尚 申请人:飞思卡尔半导体公司