用于处理经发布至数据处理设备内本地高速缓存结构的访问操作的设备与方法转让专利

申请号 : CN201180029501.7

文献号 : CN102971718B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 弗雷德里克·克劳德·玛丽·皮里路易斯-玛丽·文森特·穆顿卢卡·斯卡拉布里诺

申请人 : ARM有限公司

摘要 :

提供了一种用于处理经发布至数据处理设备内本地高速缓存结构的访问操作的设备与方法。该数据处理设备包括多个处理单元,每个处理单元具有与该处理单元相关联的本地高速缓存结构。还提供了共享访问协调电路系统以协调经发布至任一本地高速缓存结构的共享访问操作的处理。对共享访问操作而言,与本地高速缓存结构相关联的访问控制电路系统将对该本地高速缓存结构执行本地访问操作,该共享高速缓存操作是发布至该本地高速缓存结构,并且,访问控制电路将向共享访问协调电路是统发布共享访问信息。对本地访问操作而言,访问控制电路系统通常将在相关联的本地高速缓存结构上执行本地访问操作,并且,不通知共享访问协调电路系统。然而,如果已设置访问操作扩展值,则访问控制电路系统将这种本地访问操作视为共享访问操作。即使在操作系统和/或应用程序自一个处理单元迁移至另一处理单元之后,这种方法仍确保正确操作。

权利要求 :

1.一种数据处理设备,该数据处理设备包括:

处理电路,该处理电路包括用于执行数据处理操作的多个处理单元,该数据处理操作需要访问共享存储器中的数据,所述处理电路被配置为执行包括多个软件层级的软件;

每个处理单元具有与该处理单元相关联的本地高速缓存结构,该本地高速缓存结构用于储存供该处理单元访问的该数据的子集,以及具有访问控制电路,该访问控制电路用于处理经发布至所述本地高速缓存结构的访问操作,将本地高速缓存结构的至少一个类型的访问操作发布为本地访问操作或共享访问操作;

配置储存器,该配置储存器用于储存一访问操作扩展值,其中,所述访问操作扩展值由以预定层级执行的软件所设定和复位;

共享访问协调电路,该共享访问协调电路用于协调所述多个处理单元对所述共享访问操作的处理;

在接收到所述共享访问操作之后,该访问控制电路除对该相关联的本地高速缓存结构执行该本地访问操作之外,还向该共享访问协调电路发布共享访问信号;

在接收到所述本地访问操作之后,如果所述本地访问操作已经被比所述预定层级低的层级处的软件发布,则如果未设置该访问操作扩展值,该访问控制电路被布置以对该相关联的本地高速缓存结构执行该本地访问操作,而不向该共享访问协调电路发布该共享访问信号,以及如果已设置该访问操作扩展值,则该访问控制电路被布置以将该本地访问操作视为所述共享访问操作。

2.如权利要求1所述的数据处理设备,其中该至少一个类型的访问操作包括维护访问操作,该维护访问操作被发布以更新储存于该本地高速缓存结构的至少一个条目中的数据的状态。

3.如权利要求2所述的数据处理设备,其中所述维护访问操作对于该本地高速缓存结构的该至少一个条目,执行清除操作和无效操作中的至少一者。

4.如前述权利要求中的任一项所述的数据处理设备,其中该处理电路执行超管理器软件,以支持至少一个虚拟机在该处理电路上的执行,该虚拟机被布置为发布所述至少一个类型的访问操作。

5.如权利要求4所述的数据处理设备,其中所述至少一个虚拟机中的每一个包括运行一个或多个应用程序的操作系统。

6.如权利要求5所述的数据处理设备,其中当该超管理器软件将所述操作系统自所述多个处理单元中的第一处理单元移动至所述多个处理单元中的第二处理单元时,该超管理器软件使所述访问操作扩展值得以被设置。

7.如权利要求6所述的数据处理设备,其中在设置该访问操作扩展值的后,该访问控制电路将所述至少一个虚拟机发布的任何本地访问操作视为所述共享访问操作,但该访问控制电路继续将该超管理器软件发布的本地访问操作处理作为本地访问操作处理。

8.如前述权利要求中的任一项所述的数据处理设备,其中所述本地高速缓存结构是用于高速缓存用作所述数据处理操作的操作数数据的数据高速缓存。

9.如权利要求1至7中的任一项所述的数据处理设备,其中所述本地高速缓存结构包括转换旁视缓冲器,该转换旁视缓冲器用于高速缓存页表数据,该页表数据是从所述共享存储器中的页表获得的,并且,在执行相关联的处理单元内的虚拟地址到物理地址的转换时,使用该转换旁视缓冲器。

10.如权利要求1至7中的任一项所述的数据处理设备,其中所述本地高速缓存结构是指令高速缓存,该指令高速缓存用于高速缓存指令,该指令用于所述数据处理操作。

11.如前述权利要求中的任一项所述的数据处理设备,其中所述共享访问协调电路响应于所述共享访问信号,以向处理单元中的每一个广播本地访问操作请求,而非向访问控制电路已发布了所述共享访问信号的处理单元广播本地访问操作请求,从而在处理单元中的每一个上执行本地访问操作。

12.如权利要求1至10中的任一项所述的数据处理设备,其中所述共享访问协调电路响应于所述共享访问信号,以从所述多个处理单元确定处理单元的子集,并且,向所述子集中的处理单元中的每一个发布本地访问操作请求。

13.如前述权利要求中的任一项所述的数据处理设备,其中在由所述处理单元中的第一处理单元执行存储器屏蔽操作之后,如果已设置所述访问操作扩展值,则所述处理单元中的所述第一处理单元被布置,以发布存储器屏蔽信号,以使所述存储器屏蔽操作在所述处理单元中的至少一个其他处理单元上执行。

14.如权利要求13所述的数据处理设备,其中处理单元中的该第一处理单元向该共享访问协调电路系统发布该存储器屏蔽信号,以使该存储器屏蔽操作在处理单元中的该至少一个其他处理单元上执行。

15.如前述权利要求中的任一项所述的数据处理设备,其中所述共享访问协调电路包括高速缓存一致性电路,该高速缓存一致性电路采用高速缓存一致性协议,以确保由每一处理单元所访问的数据是最新的。

16.如前述权利要求中的任一项所述的数据处理设备,其中所述配置储存器为所述多个处理单元中的每一处理单元储存分离访问操作扩展值,并且,该访问控制电路在处理该本地访问操作时,参考与该访问控制电路相关联的访问操作扩展值。

17.如前述权利要求中的任一项所述的数据处理设备,其中所述多个处理单元形成对称多重处理SMP处理电路的多个处理器。

18.一种处理经发布至数据处理设备内本地高速缓存结构的访问操作的方法,该数据处理设备被配置为执行包括多个软件层级的软件,该数据处理设备具有多个处理单元,该多个处理单元用于执行需要访问共享存储器中的数据的数据处理操作,每一处理单元具有与该处理单元相关联的本地高速缓存结构,该本地高速缓存结构用于储存供该处理单元访问的数据的子集,该方法包括以下步骤:提供共享访问协调电路,以协调所述多个处理单元对共享访问操作的处理;

储存访问操作扩展值,其中,所述访问操作扩展值以预定层级执行的软件所设定和复位;

在处理经发布至本地高速缓存结构中的一个的所述共享访问操作时,除对所述本地高速缓存结构中的一个执行本地访问操作以外,还向该共享访问协调电路发布共享访问信息;

在处理经发布至本地高速缓存结构中的一个的本地访问操作时,如果所述本地访问操作已经由比所述预定层级低的层级处的软件发布:(1)如果未设置该访问操作扩展值,则对所述本地高速缓存结构中的一个执行本地访问操作,而不向该共享访问协调电路发布该共享访问信息,以及(2)如果已设置了该访问操作扩展值,则将该本地访问操作视为所述共享访问操作。

19.一种用于处理经发布至数据处理设备内本地高速缓存结构的访问操作的装置,该数据处理设备被配置为执行包括多个软件层级的软件,该数据处理设备具有多个处理单元,该多个处理单元用于执行需要访问共享存储器中的数据的数据处理操作,每一处理单元具有与该处理单元相关联的本地高速缓存结构,该本地高速缓存结构用于储存供该处理单元访问的数据的子集,所述装置包括:用于提供共享访问协调电路以协调所述多个处理单元对共享访问操作的处理的装置;

用于储存访问操作扩展值的装置,其中,所述访问操作扩展值以预定层级执行的软件所设定和复位;

用于在处理经发布至本地高速缓存结构中的一个的共享访问操作时,除对所述本地高速缓存结构中的一个执行本地访问操作以外,还向该共享访问协调电路发布共享访问信息的装置;

用于在处理经发布至本地高速缓存结构中的一个的本地访问操作时,如果所述本地访问操作已经由比所述预定层级低的层级处的软件发布,则进行以下动作的装置:(i)如果未设置该访问操作扩展值,则对所述相关联的本地高速缓存结构中的一个执行本地访问操作,而不向该共享访问协调电路发布该共享访问信息,并且,(ii)如果已设置了该访问操作扩展值,则将该本地访问操作视为所述共享访问操作。

说明书 :

用于处理经发布至数据处理设备内本地高速缓存结构的访

问操作的设备与方法

技术领域

[0001] 本发明涉及一种用于处理发布至数据处理设备内本地高速缓存结构的访问操作的设备与方法,具体地,其中该数据处理设备提供多个处理单元,该多个处理单元的每一个各自具有这种本地高速缓存结构。

背景技术

[0002] 已知两个或两个以上处理单元(例如,处理器核心)共享对共享存储器的访问的多重处理系统。通常,这种系统用于通过将不同处理器核心配置成并行执行各别数据处理操作,而获得较高性能。
[0003] 为进一步改善访问多重处理系统内的数据的速度,已知为处理单元中的每一个提供至少一个本地高速缓存结构,该本地高速缓存结构用于储存保存于共享存储器中的数据的子集。这种本地高速缓存结构可采用各样形式,例如,用以储存由处理单元处理的数据的数据高速缓存、用以储存由处理单元执行的指令的指令高速缓存、在将由处理单元发布的虚拟地址转换为物理地址时,用以储存所使用的页表信息的转换旁视缓冲器(TLB)等。
[0004] 在多重处理系统内,应用程序可自一个处理单元迁移至另一处理单元。因此,存在以下可能性:在一个处理单元上执行时,由应用程序使用的数据在应用程序已迁移至另一处理单元的后,可继续在该处理单元的本地高速缓存结构中被高速缓存。虽然,已知提供一致性机制,来追踪保留在各样本地高速缓存结构中的数据,以确保处理单元将始终访问最新版本的数据,以下情况仍可发生:在本地高速缓存结构的一个或多个条目上执行的操作,可能不会对保存于另一处理单元的本地高速缓存结构中的数据执行相应的操作,而此时这种操作的执行将较合适。这种情况的一个示例为高速缓存维护操作的执行。
[0005] 通常,高速缓存维护操作是由操作系统发布的,以更新本地高速缓存结构中的一个或多个条目的状态。如果操作系统未完全感知由数据处理设备提供的多个处理单元,例如可为以下状况:如果该操作系统为由超管理器软件层自硬件平台屏蔽的单处理器操作系统,则该操作系统可发布高速缓存维护操作,该高速缓存维护操作仅将对本地高速缓存结构执行,该本地高速缓存结构与正执行的操作系统所在的处理单元相关联,即使该高速缓存维护操作将应用的资料可储存于另一处理单元的本地高速缓存结构中。仅仅举例而言,考虑以下情形:高速缓存维护操作识别出:特定地址范围或特定程序识别符(程序ID)的任何高速缓存条目应为无效。当对于当前正执行的操作系统所在的处理单元的本地高速缓存结构执行该操作时,则这种高速缓存维护操作将恰当地使该本地高速缓存结构中的任何条目无效,该本地高速缓存结构未于特定地址范围内,或与特定程序ID相关联。然而,对于保存于任何其他处理单元的相应本地高速缓存结构中的数据,将不采取动作。如的前所述,实际上,该举措仍可保留数据,该数据意欲成为这种高速缓存维护操作的操作对象,但由于操作系统未感知硬件架构,所以条目将不为高速缓存维护操作的操作对象。
[0006] 虽然此问题不仅将在使用超管理器软件时出现,但通常该问题可能在使用超管理器软件层时出现。具体地,多重处理系统可执行超管理器软件,以支持至少一个虚拟机在处理电路系统上的执行,每一虚拟机包括执行一个或多个应用程序的操作是统。在这种环境中,操作系统与一个或多个应用程序都无需了解下层硬件平台,且尤其将不需感知正在使用多重处理系统。因此,应用程序及/或操作系统可发布以单处理器环境为前提的高速缓存维护操作,且因此可能生成上述的问题。
[0007] 对超管理器而言,解决这种问题的一个方法为,当操作系统及/或应用程序自一个处理单元迁移(在本文中还称为“切换”)至另一处理单元时,执行各样高速缓存维护操作。例如,在允许被切换的操作系统及/或应用程序在新处理器核心上开始操作的前,超管理器可广泛地执行数据高速缓存清除及无效操作、指令高速缓存无效操作、TLB无效操作等。然而,虽然这种方法将解决该问题,但这种方法显著地影响了性能,且尤其让使用多重处理平台的潜在益处不得实现。
[0008] 对超管理器软件而言,替代方法可为:当将操作系统及/或应用程序自来源处理单元迁移至目标处理单元时,将来源处理单元标识为用于随后将在目标处理器上执行的某些操作的可能目标。随后,超管理器将必须进一步将目标处理器程序化,以在遭遇任何此类操作时截获任何此类操作,以便随后在发布此类操作时,超管理器将得到通知。此时,超管理器软件将随后决定是否还需要在来源处理器以及目标处理器上执行这种操作。然而,这种方法的显著缺陷为:需要截获在目标处理器上所执行的操作。此举引起显著的性能损失,因为超管理器软件比所需更为频繁地被调用。具体而言,如果并非基于微粒(fine grain)而设计该截获功能性,则超管理器软件可能被调用于许多操作,在操作中,不需要与来源处理器有关的动作。还存在显著的复杂性问题,因为超管理器软件需要了解操作,以决定是否需要在来源处理器以及目标处理器上执行操作。
[0009] 因此,需要提供一种改进技术,该技术用于处理发布至具有多个处理单元的数据处理系统内本地高速缓存结构的访问操作,该处理单元中的每一个具有这种本地高速缓存结构。

发明内容

[0010] 从第一方面来看,本发明提供一种数据处理设备,该数据处理设备包括:处理电路,该处理电路包括用于执行数据处理操作的多个处理单元,该数据处理操作需要访问共享存储器中的数据;每一处理单元具有与该处理单元相关联的本地高速缓存结构,该本地高速缓存结构用于储存供该处理单元访问的该数据的子集;以及具有访问控制电路,该访问控制电路用于处理经发布至该本地高速缓存结构的访问操作,将该本地高速缓存结构的至少一个类型的访问操作发布为本地访问操作或共享访问操作;配置储存器,该配置储存器用于储存访问操作扩展值;共享访问协调电路,该共享访问协调电路用于协调该多个处理单元对该共享访问操作的处理;在接收到该共享访问操作的后,该访问控制电路除对该相关联的本地高速缓存结构执行该本地访问操作的外,还向该共享访问协调电路发布共享访问信息;在接收到该本地访问操作的后,如果未设置该访问操作扩展值,则该访问控制电路被布置,以对该相关联的本地高速缓存结构执行该本地访问操作,而不向该共享访问协调电路发布该共享访问信息;以及如果已设置该访问操作扩展值,则该访问控制电路被布置,以将该本地访问操作视为该共享访问操作。
[0011] 根据本发明,可将特定类型的访问操作发布为本地访问操作或共享访问操作。随后,提供配置储存器,该配置储存器由以下方式用于储存访问操作扩展值:处理本地访问操作的方式取决于是否已设置该访问操作扩展值。当与本地高速缓存结构相关联的访问控制电路接收共享访问操作时,则该访问操作扩展值的值并不相关,且该访问控制电路仅将对相关联的本地高速缓存结构执行本地访问操作,且另外向共享访问协调电路发送共享访问信息。随后,该共享访问协调电路将向其他处理单元广播信号,以使该本地访问操作还根据与处理单元相关联的本地高速缓存结构而执行,或者,替代地,在考虑到该共享访问协调电路所保留的某种状态的情况下,该共享访问协调电路将决定处理单元的子集,将这种信号发送至处理单元。
[0012] 当该访问控制电路接收到本地访问操作时,则在未设置该访问操作扩展值的情况下,该访问控制电路仅对该相关联的本地高速缓存结构执行该本地访问操作。然而,如果已设置该访问操作扩展值,则根据本发明,即使仅接收到本地访问操作,该访问控制电路还将该本地访问操作视为共享访问操作。
[0013] 通过这种方法,应理解,上述问题得以缓解。具体地,一旦已设置该访问操作扩展值,则本地访问操作将被视为共享访问操作,并且因此,以下状况并不要紧:即便使本地访问操作发布的物理并未感知该多重处理的结构,或可能试图成为物理的目标的数据实际上可被储存于另一处理单元的本地高速缓存结构中。
[0014] 此外,当与上述的机制相比较时,由于保留在多重处理平台上执行的性能益处,本发明的方法显著地改良性能,且减低复杂度。此外,在使用超管理器软件的实施例中,既不需要截获任何本地访问操作,还不需要该超管理器软件了解操作,以决定应如何处理这种截获操作。
[0015] 一旦已设置该访问操作扩展值,则在一个实施例中,可将所有后续本地访问操作视为共享访问操作,无论其来源如何。然而,在替代实施例中,在该处理电路上执行的软件由多个软件层级组成,该访问操作扩展值由处于预定层级而实施的软件设置及复位,且当处理由处于低于该预定层级的层级的软件发布的本地访问操作时,该访问控制电路仅响应于该访问操作扩展值。因此,举例而言,考虑使用超管理器软件的实施例,该超管理器软件可形成最高层级,操作可形成较低层级,且在该操作系统上执行的应用程序可形成更低层级。如果该超管理器层级已设置该访问操作扩展值,则由该操作或应用程序发布的任何本地访问操作将视为共享访问操作,然而该超管理器软件可继续发布本地访问操作,该本地访问操作是被处理为本地访问操作的。此举,例如,在该操作系统为单处理器操作是统的情况下可适用,且因此未感知该处理电路的多重处理性质。在另一个示例中,即使该操作是统感知该处理电路的多重处理器性质,该方法仍可适用,例如:如果以该操作系统了解操作应以哪个处理器为目标的方式,将该操作系统优化,但在超管理器支配下执行该操作系统的情形下,该了解可能有误。
[0016] 在替代实施例中,如果该操作系统已设置该访问操作扩展值,则由下层应用程序发布的任何本地访问操作将视为共享访问操作,但该操作系统(及实际上在该操作上层的任何超管理器层级)可继续发布本地访问操作,该本地访问操作由该访问控制电路处理为本地访问操作。
[0017] 可被发布为本地访问操作或共享访问操作的该至少一个类型的访问操作可采用各样形式。在一个实施例中,一个这种类型的访问操作包括:维护访问操作,该维护访问操作被发布以更新数据状态,该数据状态被储存于该本地高速缓存结构的至少一个条目中。因此,维护访问操作通常将不更新储存于该高速缓存结构中的该数据本身,但替代地,维护访问操作将生成相关联的状态的改变,该相关联的状态是保存于与该数据相关联的该本地高速缓存结构中。在一个特定实施例中,该维护访问操作对于该本地高速缓存结构的该至少一个条目,执行清除操作及无效操作中的至少一者。清除操作将使任何错数据及有效数据被驱逐至存储器,错数据为比保存于存储器中的数据更新的相应数据。通常,结合数据高速缓存执行这种维护访问操作。无效操作将例如通过重设与该条目相关联的有效位,而使该本地高速缓存结构中的特定条目的当前内容无效。通常,结合各样不同的本地高速缓存结构(例如,指令高速缓存、数据高速缓存、TLB等)以使用无效操作。
[0018] 在一个实施例中,该处理电路执行超管理器软件,以支持至少一个虚拟机在该处理电路上的执行,该虚拟机是经配置以发布该至少一个类型的访问操作。通常,每一虚拟机将包括执行一个或多个应用程序的操作系统。如前所述,多重处理系统内的这种超管理器软件的一个用途为,允许在该多重处理系统上执行单处理器感知操作系统,其中该超管理器软件使该硬件平台的特定结构自该操作系统屏蔽。
[0019] 然而,即使该操作系统能使用多重处理器,在超管理器软件的控制下执行这种操作系统仍可存在益处。例如,当需要在给定的多重处理器系统上使多个操作系统共存时,可在超管理器软件的控制下执行能使用多重处理器的操作系统。通过这种方法,可在该硬件上同时执行两个已知操作系统,而不对操作是统中的任一者进行修改。如另一示例,超管理器软件通常还用于多重处理器系统中,其中部分处理器的电力开启及电力切断是在该超管理器的控制下。在这种实施例中,该操作系统通常将不感知到以下状况:该操作通常是在执行的该硬件具有取决于工作负荷而启用的不同数目个处理器。通过控制该超管理器层级中该多重处理系统的该电力开启/切断,委托代工(OEM)供货商可提供附加价值,而无需对所支持的该多个操作系统进行修改。
[0020] 当使用超管理器软件时,通常将发生以下状况:该超管理器软件将在特定时间点,将该操作系统自处理单元中的一者移动至处理单元中的另一者,以使得在该移动程序的后,该操作系统随后将在该处理单元(已将操作系统移动至该处理单元)上连同任何下层应用程序而重新开始操作。在一个特定实施例中,当该超管理器软件以此方式移动操作系统时,则该超管理器软件使该访问操作扩展值得以被设置。在设置该访问操作扩展值的后,该访问控制电路是统随后将自该至少一个虚拟机发布的任何本地访问操作视为共享访问操作,但该访问控制电路是统继续将自该超管理器软件发布的本地访问操作处理为本地访问操作。
[0021] 如前所述,该本地高速缓存结构可采用各种形式。在一个实施例中,该本地高速缓存结构为:用于高速缓存作为操作数数据的数据的数据高速缓存,该操作数数据是用于数据处理操作。或者,该本地高速缓存结构可包括:转换旁视缓冲器,该转换旁视缓冲器用于高速缓存页表数据,该页表数据是自该共享存储器中的页表获得,且在执行该相关联的处理单元内的虚拟地址至物理地址的转换时,使用该转换旁视缓冲器。如另一示例,该本地高速缓存结构可包括:指令高速缓存,该指令高速缓存用于高速缓存指令,该指令用于定义数据处理操作。在又一示例中,该本地高速缓存结构可包括:分支历史缓冲器,该分支历史缓冲器用于储存数据,该数据为分支预测单元在预测是否将采用分支时所参考,或者分支目标缓冲器,该分支目标缓冲器用于储存分支指令的目标地址。
[0022] 有许多该共享访问协调电路系统可响应于该共享访问信息的方式。在一个实施例中,该共享访问协调电路响应于该共享访问信息,以向处理单元中的每一者(除了该处理单元的访问控制电路已发布该共享访问信息的处理单元)广播本地访问操作请求,藉此在处理单元中的每一者上执行该本地访问操作。因此,在此类实施例中,该共享访问协调电路并不试图决定哪些处理单元可含有数据,该数据为原始共享访问操作的对象(该原始共享访问操作为经同样发布的共享访问操作,或为由该访问控制电路升级为共享访问操作的本地访问操作(由于已设置该访问操作扩展值))。替代地,该共享访问协调电路仅向处理单元中的每一者广播请求,以使处理单元对于该原始共享访问操作所指明的数据执行本地访问操作。
[0023] 在替代实施例中,该共享访问协调电路响应于该共享访问信息,以自该多个处理单元决定处理单元的子集,该子集的本地高速缓存结构可含有由该共享访问操作识别的数据,及向该子集中的处理单元中的每一者发布本地访问操作请求。此类方法在以下情况为可能:该共享访问协调电路维护已被高速缓存数据的某些记录,且因此了解任何特定数据,本地高速缓存结构可能储存该特定数据的复本。此举使该共享访问协调电路发布的请求能够局限于处理单元的子集,由此生成能量效率增益,且通过减少不必要的所执行的访问操作的数目,潜在地达成更好性能。
[0024] 虽然本发明的实施例的上述技术是结合访问操作而使用的,但还可结合其他类型的操作使用而该技术。例如,当应用程序想要确保先前的记忆体操作(例如,写入操作)对该系统的各种其他部分为可见,或想要确保后续记忆体操作是根据此类先前记忆体操作而被排序,则已知这种应用程序执行存储器屏蔽操作,以加强存储器访问的给定排序,或者确保该先前记忆体操作的结果是为可见。然而,如果该应用程序在所述的该记忆体操作与该存储器屏蔽操作的间,自一个处理单元迁移至另一处理单元,则该存储器屏蔽操作可能将不会达成其预期目标。然而,根据一个实施例,在该由等处理单元中的第一处理单元执行存储器屏蔽操作之后,如果已设置该访问操作扩展值,处理单元中的该第一处理单元被布置,以发布存储器屏蔽信号,以使该存储器屏蔽操作在处理单元中的至少一个其他处理单元上执行。
[0025] 可为该存储器屏蔽信号提供专用传播路径,以使其他处理单元获知该存储器屏蔽信号,且因此需要本地地执行存储器屏蔽操作。然而,在一个实施例中,处理单元中的该第一处理单元向该共享访问协调电路是统发布该存储器屏蔽信号,以使该存储器屏蔽操作在处理单元中的该至少一个其他处理单元上执行。因此,在这种实施例中,该共享访问协调电路是统被重新使用,以管理传播,该传播将该存储器屏蔽操作传播至所需处理单元。
[0026] 该共享访问协调电路是统可采用各种形式。然而,在一个实施例中,该共享访问协调电路是统包括高速缓存一致性电路系统,该高速缓存一致性系统采用高速缓存一致性协议,以确保由每一处理单元访问知该数据为最新的。
[0027] 在一个实施例中,可为整个系统提供单一访问操作扩展值。然而,在替代实施例中,该配置储存器为该多个处理单元中的每一处理单元储存分离访问操作扩展值,且该访问控制电路系统在处理该本地访问操作时,参考与该访问控制电路相关联知访问操作扩展值。在一个这种实施例中,该配置储存器可由某中央储存器提供,或者,可在每一处理单元中提供分离储存器,该分离储存器共同形成该配置储存器,以使得将该相关的访问操作扩展值本地地储存至每一处理单元。
[0028] 该多个处理单元可采用各种形式,在一个实施例中,处理单元中的每一个包括:处理器。处理器毋需全部相同,但在一个实施例中,该多个处理器形成对称多重处理(symmetric multi-processing;SMP)处理电路是统。
[0029] 从第二方面来看,本发明提供一种处理发布至数据处理设备内本地高速缓存结构的访问操作的方法,该数据处理设备具有多个处理单元,该多个处理单元用于执行需要访问共享存储器中的数据的数据处理,每一处理单元具有与该处理单元相关联的本地高速缓存结构,该本地高速缓存结构用于储存供该处理单元访问的等数据的子集,该方法包括以下步骤:提供共享访问协调电路,以协调该多个处理单元对一共享访问操作的处理;储存访问操作扩展值;在处理经发布至本地高速缓存结构中的一个的该共享访问操作时,除对本地高速缓存结构中的一个执行本地访问操作以外,还向该共享访问协调电路是统发布共享访问信息;在处理经发布至本地高速缓存结构中的一个的本地访问操作时:(1)如果未设置该访问操作扩展值,则对本地高速缓存结构中的一个执行该本地访问操作,而不向该共享访问协调电路发布该共享访问信息;以及(2)如果已设置该访问操作扩展值,则将该本地访问操作视为该共享访问操作。
[0030] 从第三方面来看,本发明提供一种数据处理设备,该数据处理设备包括:处理装置电路,该处理装置电路包括:用于执行数据处理操作的多个处理单元装置,该数据处理操作需要访问共享存储器中的数据;每一处理单元装置具有与该处理单元装置相关联的本地高速缓存结构装置,该本地高速缓存结构装置用于储存供该处理单元装置访问的该数据的子集,以及具有访问控制装置,该访问控制装置用于处理经发布至该本地高速缓存结构装置的访问操作,将该本地高速缓存结构装置的至少一个类型的访问操作发布为本地访问操作或共享访问操作;配置储存器装置,该配置储存器装置用于储存访问操作扩展值;共享访问协调装置,该共享访问协调装置用于协调该多个处理单元装置对该共享访问操作的处理;在接收到该共享访问操作的后,该访问控制装置除用于对该相关联的本地高速缓存结构装置执行该本地访问操作的外,还用于向该共享访问协调装置发布共享访问信息;在接收到该本地访问操作的后,如果未设置该访问操作扩展值,则该访问控制装置用于对该相关联的本地高速缓存结构装置执行该本地访问操作,而不向该共享访问协调装置发布该共享访问信息,以及如果已设置该访问操作扩展值,则该访问控制装置用于将该本地访问操作视为该共享访问操作。

附图说明

[0031] 图1为示意性地示出了根据一个实施例的多重处理系统的示图;
[0032] 图2是流程图,其示出了根据一个实施例如何处理高速缓存维护操作;
[0033] 图3是流程图,其示出了根据一个实施例,超管理器可如何设置访问操作扩展位;
[0034] 图4A示意性地示出了根据一个实施例,在已设置访问操作扩展位的情形下,处理本地访问操作;
[0035] 图4B示意性地示出了根据替代实施例在已设置访问操作扩展位的情形下处理本地访问操作;
[0036] 图5是流程图,其标识出了程序代码生成程序,其中由于自一个处理单元迁移至另一处理单元所生成的问题可经由使用一个实施例的技术以避免;
[0037] 图6是流程图,其标识出了页表更新程序,其中由于自第一处理单元迁移至第二处理单元且随后返回至第一处理单元所生成的问题可经由使用一个实施例的技术以避免;
[0038] 图7是流程图,其示出了根据一个实施例可如何处理存储器屏蔽操作;以及图8是流程图,其标识出了涉及存储器屏蔽操作的序列操作,其中由于自一个处理单元切换至另一处理单元所生成的问题可经由使用一个实施例的技术避免。

具体实施方式

[0039] 本发明将参照本发明的如随附示图中所阐释的实施例,仅以例子而更进一步地描述。
[0040] 图1示出了根据一个实施例的多重处理系统。提供多个处理单元10、40,在阐释性示例中,两个处理单元为:包括处理器核心及相关联的本地高速缓存结构的处理器。虽然处理器不须皆相同,但在一个实施例中,处理器被相同地建构,且形成SMP系统。如图所示,第一处理电路系统10包括:用于执行一连串指令的核心20。核心20可访问一或多个高速缓存24,在一个实施例中,高速缓存24可包括:指令高速缓存及分离数据高速缓存。还可提供其他本地高速缓存结构,诸如存储器管理单元(memorymanagement unit;MMU)26在执行存储器访问控制操作(诸如由虚拟地址转换至物理地址)时所参考的TLB 28。
[0041] 还提供维护电路系统22,以用于对本地高速缓存结构(在该示例中为高速缓存24及TLB 28)执行维护操作。在一个实施例中,维护电路系统22可被认为形成部分处理器核心20,例如,且可被认为形成由核心20提供的执行管线中的一者。处理器10还包括用于配置处理器的操作的一个或多个配置寄存器30。根据本发明的实施例,储存于配置寄存器30中的信息包括:访问操作扩展值。该访问操作扩展值是维护电路22在执行高速缓存维护操作时所参考。具体地,如随后更详细的描述,取决于访问操作扩展值的值,维护电路将改变处理高速缓存维护操作的方式,该高速缓存维护操作是经指明为本地操作。
[0042] 在阐释性实施例中,处理器40以与处理器10相同的方式被建构,且因此包括核心50、维护电路52、高速缓存54、MMU 56内的TLB 58及一个或多个配置寄存器60。
[0043] 各样处理单元10、40经由一致性互连(coherent interconnect)70与共享存储器75连接。一致性互连70确保储存于各样本地高速缓存结构中的数据维持一致性,使得每一处理器具有一致的数据。因此,举例而言,如果核心50发布数据访问请求,该数据访问请求在核心50的数据高速缓存54中未得到数据,则此举将使请求被发布至一致性互连70,一致性互连70随后将决定所需数据是否储存于处理单元10的相应的数据高速缓存24内。如果是,则将自处理单元10的数据高速缓存取回该数据,且将该数据提供至处理单元40。取决于由一致性互连70使用的一致性协议,可将处理单元10的数据高速缓存中的相关数据标识为无效,或者,两个处理单元10、40可将它们的数据复本标识为共享。随后,此举将影响关于该数据的后续访问操作如何被处理。只有当在其他高速缓存中的一者中,未能找到所请求的数据时,才会自存储器75访问该数据。
[0044] 虽然,这种技术通常操作得很好,以维持数据的一致性,但当在硬件上执行的操作是统及下层应用程序未感知硬件的多重处理器性质时,可生成问题,诸如,当使用超管理器软件以允许执行多个虚拟机时,可出现问题。具体地,如图1中所标识出的,超管理器软件80可在由多个处理单元10、40组成的硬件平台上执行,以支持至少一个虚拟机90在处理电路上的执行。每一虚拟机将由执行一个或多个应用程序94、96的操作系统92组成。如下文所将更详细地描述的,当仅有单一虚拟机90正由超管理器80执行时,或者,替代地,可存在多于一个的虚拟机,超管理器软件正支持该多于一个的虚拟机的执行时,可使用本发明的实施例的技术。因此,如虚线框中所示出了,可提供至少另一个虚拟机100,该虚拟机100由执行数个应用程序104、106的操作系统102组成。
[0045] 在操作时,超管理器软件80可将虚拟机自一个处理单元迁移至另一处理单元,例如,当将每一处理单元10、40的电流负载纳入考虑,而设法提高性能时。由于由超管理器软件80将下层硬件自虚拟机屏蔽,所以虚拟机90通常将未感知其正在哪个处理单元10、40上执行,且此外,虚拟机90通常将未感知其操作何时自一个处理单元被切换至另一处理单元。因此,因为虚拟机期望作为高速缓存维护操作的对象的数据将储存于本地高速缓存结构中,所以操作系统92及/或应用程序94、96可发布被指明为本地高速缓存维护操作的高速缓存维护操作。然而,如果在将数据最初储存于高速缓存结构中的时间与发布高速缓存维护操作的时间的间,虚拟机已自一个处理单元迁移至另一处理单元,则由于并非所有作为高速缓存维护操作的对象的数据都正经受该高速缓存维护操作,此前提可能不正确,且可能潜在地导致不正确的操作。
[0046] 一致性互连70将特定高速缓存条目标识为共享,本身不足以确保不产生问题。例如,考虑虚拟机将十个数据值写入高速缓存的情形,其中将数据值中的三个写入处理单元10的高速缓存24中,同时虚拟机90正在处理单元10上执行,但随后超管理器将虚拟机90的执行切换至处理单元40,以使得将剩余的七个数据值写入数据高速缓存54中。如果随后发布高速缓存维护操作,以清除包括彼等十个数据值的地址的范围地址,而虚拟机90仍在处理单元40上操作,则可预见地,高速缓存54中的七个数据值将位于高速缓存中,且执行必要的清除操作。如果将条目标识为共享,则信号还将发布至一致性互连70,以确保该数据的任何其他复本均无效。然而,就所述的其他三个数据值而言,对于与该三个数据相关联的地址,处理单元40内本地执行的高速缓存维护操作将仅侦测到数据不在高速缓存中,且因此将不再采取动作(替代地,假定已将该数据驱逐至存储器)。然而,结果为,三个数据值仍将常驻于高速缓存24内,且将未被清除,导致就数据值而言,共享存储器75将为过时的。
此举可导致虚拟机的不正确操作。
[0047] 根据本发明的实施例,经由提供访问操作扩展位来解决该问题,该访问操作扩展位可由处于特定层级的软件设置,且一旦设置,则将影响处于较低层级的软件发布的本地高速缓存维护操作如何被处理。因此,在一个实施例中,可允许操作系统92设置访问操作扩展位,以使得由应用程序94、96发布的任何后续高速缓存维护操作将取决于:操作系统是否已设置访问操作扩展位,而被不同地处理。然而,出于以下描述的目标,将假定访问操作扩展位可由超管理器软件80设置,以使得由虚拟机(操作系统92或应用程序94、96中的一者)发布的任何高速缓存维护操作随后将取决于:是否已设置访问操作扩展位,而被不同地处理。
[0048] 图2是一流程图,其示出了:根据一个实施例,本地高速缓存维护操作的处理如何受访问操作扩展位值影响。特定言的,在步骤150,维护电路是统等待接收高速缓存维护操作。一旦已接收到高速缓存维护操作,则在步骤155决定高速缓存维护操作是否为本地访问操作。如果否,则程序进入步骤165,在步骤165中,将共享访问信息发送至一致性互连,以使本地访问操作在一或多个其他处理单元上执行,且另外在步骤170,将对于本地高速缓存结构执行本地高速缓存维护操作,该本地高速缓存结构与在步骤150接收高速缓存维护操作的维护电路相关联。
[0049] 应注意,虽然按顺序标识出了步骤165及步骤170,但可以相反次序执行步骤,或实际上可同时执行步骤。此外,在某些实施例中,可执行在步骤170所执行的本地高速缓存维护操作,而不考虑任何其他处理单元上的相应本地高速缓存维护操作响应共享访问信息的操作结果。然而,在替代实施例中,可使在步骤170的本地高速缓存维护操作的操作延迟,直至各样其他处理单元响应在步骤165发布至一致性互连的共享访问信息,而已执行其他处理单元的本地高速缓存维护操作。
[0050] 如果在步骤155,决定高速缓存维护操作是本地访问操作,则在步骤160决定是否已设置访问操作扩展位。如果否,则仅将高速缓存维护操作视为本地操作,且因此在步骤170执行本地高速缓存维护操作。然而,如果在步骤160决定已设置访问操作扩展位,则实际上本地访问操作将被视为共享访问操作。因此,执行步骤165及步骤170。由此可见,当已设置访问操作扩展位时,被指明为本地访问操作的高速缓存维护操作是被「升级」为视为共享访问操作。因此,此举确保在所有相关高速缓存结构中均执行高速缓存维护操作,而不管虚拟机当前正在哪个处理单元上执行。
[0051] 图3为流程图,其示出了根据一个实施例,超管理器软件80如何决定何时设置访问操作扩展位。在步骤200,超管理器将操作系统自来源处理单元移动至目标处理单元。在该程序期间,超管理器软件在步骤205决定操作系统是否能感知多重处理器,在此示例中为是否「能感知SMP 」(因为假定硬件为SMP处理电路)。如果操作是统不能感知SMP,则程序进入步骤210,在步骤210中,设置访问操作扩展位,而如果操作系统能感知SMP,则在步骤215清除访问操作扩展位。在步骤210或步骤215的后,随后在步骤220,超管理器允许操作是统在目标处理单元上开始执行。
[0052] 在参阅图3所描述的实施例中,假定如果操作系统为能感知SMP,则该操作系统将发布高速缓存维护操作,该高速缓存维护操作能正确地被识别为共享操作或本地操作。然而,在替代实施例中,超管理器仅可经配置成:每当该超管理器将操作系统自一个处理单元移动至另一处理单元时,设置访问操作扩展位,而不管操作系统是否能感知SMP。例如,如果以操作系统了解操作应在哪个处理器上执行的方式,将能使用SMP的操作系统优化,则此举可适用,因为当操作系统在超管理器层支配下执行时,该了解可能有误。
[0053] 图4A示意性地示出了根据一个实施例如何处理本地访问操作。为了本示例,假定多重处理系统提供三个处理单元300、320、340。为了阐述,仅标识出了处理单元的相关内部结构。因此,每一处理单元300、320、340具有分别与一个或多个本地高速缓存结构310、330、350耦合的相关联维护电路305、325、345。针对处理单元300,访问操作扩展位307是经标识由了,假定在该情况下,已设置该访问操作扩展位。随后,各样信号线旁的圆圈中的数字指示:在本地访问操作由维护电路是统305接收后的顺序。因此,如图所示,一旦本地访问操作由维护电路305接收,则维护电路305参考访问操作扩展位307,在此情况下,维护电路305发现访问操作扩展位307已被设置。因此,维护电路305随后对与其相关联的本地高速缓存结构310执行本地访问操作,同时还将共享访问信息发布至一致性互连360内的协调电路370。在此示例中,协调电路在接收到共享访问信息后,仅向其他处理单元中的每一者广播请求,且因此维护电路325以及维护电路345都接收执行本地访问操作的请求。
因此,如图4A中所标识出了,两个维护电路是统325、340随后分别对与它们相关联的本地高速缓存结构330、350执行它们的本地访问操作。
[0054] 虽然对于本地高速缓存结构310执行本地访问操作,可完全自以下两者解耦合:向协调电路是统发布共享访问信息的程序以及后续的其他本地访问操作,但在一个实施例中,维护电路305可延缓执行其本地访问操作,直至已执行所有其他本地访问操作,且本地访问操作的结果经由协调电路370返回至维护电路305。因此,如邻近于本地访问操作信号路径(位于维护电路305与本地高速缓存结构310的间)的圆圈中的数字6所示,可在其他操作完成的后,执行该本地访问操作。
[0055] 图4B标识出了协调电路370保留历史数据的替代实施例,该历史数据使协调电路370能够决定,在接收到共享访问信息后,向哪些其他处理单元发布请求。在图4B中所标识出了的特定示例中,假定协调电路370保持向本地高速缓存结构分配数据的历史380。因此,当共享访问信息由协调电路370接收时,协调电路可考虑由共享访问信息所指明的数据地址,且根据分配历史380,可决定本地高速缓存结构330、350中何者在该地址处具有先前被高速缓存的数据。在所阐释的示例中,协调电路370决定本地高速缓存结构330在该地址处具有先前被高速缓存的数据,但本地高速缓存结构350不具有该数据。因此,仅向维护电路325发布请求,而不向维护电路统345发布请求。
[0056] 协调电路370可采用各样形式,但在一个实施例中,协调电路370将由监听控制单元形成,该监听控制单元用于执行监听操作,该监听操作为高速缓存一致性协议所要求。该高速缓存一致性协议的功能可扩展为:不仅使以数据高速缓存为对象而发布的维护操作得以正确操作,而且使以指令高速缓存、TLB等为对象而发布的维护操作得以正确操作。
[0057] 图5是流程图,其示出了可由虚拟机执行的特定顺序的操作。特定言的,在步骤400,生成某些程序代码,在生成该程序代码时,该程序代码通常作为数据被写入数据高速缓存。然而,在可执行该程序代码的前,首先需要将该程序代码向外储存至存储器,且随后被取回至指令高速缓存中。因此,在步骤410,发布本地数据高速缓存清除操作,且在步骤
420,发布本地指令高速缓存无效操作。本地数据高速缓存清除操作410将使数据高速缓存内的有效数据及错数据被驱逐至存储器,而本地指令高速缓存无效操作将确保:可能已由程序代码生成步骤400更新的任何指令将无效,以便随后在开始执行新程序代码时,不会错误地参考指令。因此,在步骤430,当执行新程序代码时,将自存储器取回正确指令,且该正确指令通常将被储存于指令高速缓存中。
[0058] 如果未使用本发明的实施例的上述技术,则存在时段,在该时段中,自一个处理单元切换至另一处理单元的虚拟机执行可导致不正确操作。具体地,如果在图5中所示出了的时段A期间(时段A开始于程序代码生成程序开始的后的一段时间,且结束于在步骤410发布本地数据高速缓存清除操作的前),虚拟机自第一处理单元切换至第二处理单元,则当随后发布本地数据高速缓存清除操作时,该操作仅将清除储存于第二处理单元的数据高速缓存中的数据。此举可使某些新生成的程序代码继续存在于第一处理单元的数据高速缓存中,而不清除该数据。然而,经由使用上述技术,在步骤410发布的本地数据高速缓存清除操作经升级为共享数据高速缓存清除操作,该升级动作将确保所有所需条目被清除,而不管条目是位于第二处理单元的数据高速缓存中,还是第一处理单元的数据高速缓存中。
[0059] 类似地,在时段B期间,如果虚拟机的执行自第二处理单元切换回至第一处理单元,则可生成问题。在该示例中,在未使用本发明的情况下,第一处理单元的本地指令高速缓存将不会在420步骤变得无效,且因此可能在步骤430执行不正确的指令。然而,经由使用前文描述的技术,在步骤420,本地指令高速缓存无效操作将升级至共享指令高速缓存无效操作,从而确保两个指令高速缓存中的相关条目都变得无效。
[0060] 图6为流程图,其标识出了页表更新程序。具体地,在步骤450,使用页表条目来执行地址转换,在该执行期间,页表条目通常将储存于MMU的TLB内。随后,需要更新页表条目。因此,在步骤460,发布本地TLB无效操作,以使即将更新的TLB中的任何高速缓存条目无效。此后,在步骤470,修改相关页表条目。随后,在步骤480,通过使用页表条目来执行地址转换,使该程序继续,在该执行期间,页表数据将再次自存储器储存于TLB中。如果在单一处理单元上执行这种程序,则将不会生成问题。然而,如果在图6中所示出了的时段A期间的某一时间,虚拟机的操作自第一处理单元切换至第二处理单元,且随后在时段B期间的某一时间,虚拟机的实施自第二处理单元切换回至第一处理单元;则在未使用本发明的实施例的技术的情况下可生成问题。具体地,由于在时段A期间发生的切换,所以应理解,在步骤460的本地TLB无效操作将不能使第一处理单元的TLB中的相关页表条目无效。此意谓当执行随后在时段B期间返回至第一处理单元时,由于仍存在保留于第一处理单元的TLB内的过期数据,在TLB内可能发生瞬时打断。然而,经由使用本发明的实施例的前述技术,不会生成该问题,因为在步骤460发布的本地TLB无效操作经升级为共享TLB无效操作,且因此两个TLB中的相关条目均为无效。
[0061] 虽然直到现在已结合高速缓存维护操作的处理,描述了本发明的实施例的技术,但本发明的实施例的技术还可用于确保存储器屏蔽操作的正确操作,如将参阅图7及图8的进一步讨论。如该技术领域具有通常技术者将理解,如果程序想要确保先前记忆体操作(诸如,写入操作)使该操作结果为系统中的其他代理器可见,或想要确保在任何后续记忆体操作开始的前,该先前记忆体操作已完成,则可执行存储器屏蔽操作。因此,如图7的步骤500所标识出了,决定是否执行存储器屏蔽操作,且每当决定将执行存储器屏蔽操作时,则在步骤510决定是否已设置访问操作扩展位。如果否,则在步骤530仅在处理单元上本地执行存储器屏蔽操作,虚拟机当下正在该处理单元上执行。然而,如果已设置访问操作扩展位,则在步骤520向一致性互连发布存储器屏蔽信号520,且在步骤530本地执行存储器屏蔽操作。随后,一致性互连将使合适的请求发布至其他处理单元,以使其他处理单元还本地实施存储器屏蔽操作。当考虑图8中所标识出了情形的范例顺序时,可看到这种方法的益处。
[0062] 具体地,在步骤550,在写入数据得到缓冲的情况下执行写入操作。具体地,在许多系统中,当将写入数据置放于写入缓冲器中时,写入操作被认为已完成,而实际上,在该写入缓冲器中的写入数据被取出且将写入数据真正地交给存储器的前,可能还需许多周期。
[0063] 因此,如果重要的是,以下某操作可见写入数据,则通常在写入操作的后发布存储器屏蔽操作,如图8中的步骤560所示。此后,当在步骤570执行期望先前写入操作的写入数据为可见的操作时,在步骤560执行的存储器屏蔽操作将确保该写入数据确可为该操作所见。然而,如果在图8中所示出了的时间A处,虚拟机执行自一个处理单元切换至另一处理单元,则应理解,除非使用本发明的实施例的技术,否则存储器屏蔽操作560将不能达成其目标,因为存储器屏蔽操作560将本地地被应用于处理单元内,虚拟机随后于该处理单元上执行,而写入数据实际上将保存于不同处理单元的写入缓冲器中。然而,经由使用本发明的实施例的技术,在步骤560发布的存储器屏蔽操作将升级为共享存储器屏蔽操作,从而在两个处理单元上执行存储器屏蔽操作,且因此使写入数据被取出至存储器,且随后在步骤570执行后续操作时,使写入数据为可见。
[0064] 尽管本文已描述特定实施例,但应理解,本发明并非限于实施例,且可在本发明的范畴内对实施例进行许多修改及添加。例如,在不脱离本发明的范畴的情况下,可将以下从属权利要求的特征与独立权利要求的特征进行各种组合。