高速缓存刷新的方法及系统与流程

文档序号:17455140发布日期:2019-04-20 03:11阅读:249来源:国知局
本申请要求美国临时申请号为62/188,887,申请日为2015年7月6日的优先权。
技术领域
:本发明实施例涉及计算系统中的存储器管理,以及更具体地,涉及一种高速缓存刷新的方法及系统。
背景技术
::在多核计算系统中,每个处理器具有自己的高速缓存,用以存储数据的副本,该数据还存储在系统存储器中(即,主存储器)。高速缓存是比系统存储器更小更快的存储器,以及其一般位于与处理器相同的芯片上。通过减少存取芯片外的存储器,高速缓存可增强系统系能。大多处理器具有不同的独立高速缓存用以存储指令及数据。一般将数据高速缓存组织为多级层次结构,用更大更慢的高速缓存备份(backup)更小更快的高速缓存。一般地,存取多级高速缓存时先检查最快的层1(L1)高速缓存;如果未命中L1高速缓存,那么在检查外部的系统存储器之前,检查次快的层2(L2)高速缓存,诸如此类。其中一种常用的高速缓存写入策略称为“回写(write-back)”策略。使用回写策略时,处理器仅向自己的本地高速缓存写入数据项。延迟向系统存储器的写入操作直至包含该数据项的高速缓存块(cacheline)将要被另一高速缓存块更换时。在回写操作之前,高速缓存的内容可以为更新的以及与系统存储器的内容不一致的内容,其中系统存储器中保存有旧数据。为了确保系统存储器中存储最新的数据,可将高速缓存的内容刷新(即,回写)至系统存储器。直接存储器存取(DirectMemoryAccess,DMA)请求用于请求数据块时,会发生高速缓存刷新,例如当运行在视频处理器上的多媒体应用需要从系统存储器读取最新的数据时。然而,需要存储器数据的应用可能被阻止直至完成高速缓存刷新的操作。因而,高速缓存刷新的延迟危及用户体验。因此,需要提升高速缓存刷新的性能。技术实现要素:为了解决上述问题,本发明提出了一种高速缓存刷新的方法及系统,用于将高速缓存刷新至计算系统中的系统存储器。在一个实施例中,提供一种高速缓存刷新的方法,包括经由第一处理器接收信号,用以向系统存储器刷新高速缓存的至少一部分,其中高速缓存耦接至计算系统中包括第一处理器的多个激活处理器;基于信号中指示的刷新长度及运行环境,在多个候选刷新机制中确定目标刷新机制,以及从多个激活处理器中确定用于执行目标刷新机制的一个或多个激活处理器,运行环境包括激活处理器的数量;以及根据目标刷新机制将高速缓存刷新至系统存储器。在一个实施例中,提供一种高速缓存刷新的系统,包括:多个处理器,多个处理器包括多个激活处理器;多个高速缓存,耦接至多个激活处理器;以及系统存储器,耦接至多个高速缓存,其中,多个激活处理器中的每个激活处理器用于:接收信号,用以向系统存储器刷新高速缓存的至少一部分;基于信号中指示的刷新长度及运行环境,从多个候选刷新机制中确定目标刷新机制以及确定用于执行目标刷新机制的一个或多个激活处理器,运行环境包括激活处理器的数量;以及指示一个或多个激活处理器根据目标刷新机制,向系统存储器刷新高速缓存。基于以上技术方案,在本发明实施例中,基于刷新长度及运行环境确定目标刷新机制,可以提升高速缓存刷新的性能。附图说明本发明的例子是示意的目的而非限制,在附图中相同的序号表示相同的组件。另外,当结合实施例描述特定的特征、结构或特性时,这主张本领域技术人员结合其它实施例(无论是否明确描述)实施这些功能、结构或者特性是在其知识范围内的。图1是根据一个实施例的多处理器计算系统的示意方块图。图2是根据一个实施例的图1的多处理器计算系统中的群集的示意方块图。图3是根据一个实施例的用于选择高速缓存刷新机制的方法的示意流程图。图4是根据一个实施例的特定地址范围的刷新方法的示意流程图。图5是根据一个实施例的特定地址范围的并行刷新方法的示意流程图。图6是根据一个实施例的高速缓存刷新的方法的示意流程图。具体实施方式在下面的说明书中,阐述了许多特定的细节。然而应理解,可不用这些特定的细节实现本发明实施例。在其它例子中,为了不模糊对本说明书的理解,未详细示出公知的电路、结构及技术。然而本领域技术人员应理解,可不用这些特定的细节实施本发明。根据本文的描述,本领域的普通技术人员将能够实现适当的功能而无需过多的实验。应注意,本文中使用的术语“多处理器计算系统”等价于“多核处理器系统”。在一个实施例中,本文中描述的每个处理器等价于中央处理单元(CentralProcessingUnit,CPU),其可包含一个或多个核。在一个可替换的实施例中,本文中描述的每个处理器可等价于一个核。群集可实现为一组处理器,其包括一个或多个处理器。本发明实施例提供一种方法及系统,用以高效地将数据高速缓存刷新至系统存储器(例如,诸如动态随机存取存储器(DynamicRandomAccessMemory,DRAM)的主存储器)。在一个实施例中,在多处理器计算系统中提供高速缓存控制器。响应于高速缓存刷新请求,高速缓存控制器基于计算系统的运行环境以及该请求中指示的刷新长度(extentofflushing),在多个候选刷新机制中选择高速缓存刷新机制(即目标刷新机制)。高速缓存控制器还可选择激活处理器的数量或特定的一个或多个激活处理器,用以执行高速缓存刷新操作。该请求可指示待刷新的高速缓存的地址范围,或指示所有高速缓存将被完全刷新。运行环境的一个例子是计算系统中可用于执行高速缓存刷新的激活处理器的数量。例如,其中一个候选刷新机制为完全刷新,还称为集合/路径刷新(set/wayflushing),其要求所有处理器完全刷新它们的高速缓存。刷新操作是被逐层执行的:先刷新更小更快的高速缓存(例如,L1高速缓存),接着刷新更大更慢的高速缓存(例如,L2高速缓存)。刷新所有层级的高速缓存后才能完成刷新操作。另一候选刷新机制称为特定地址范围的刷新,还称为通过地址刷新,在其中单个处理器用于刷新高速缓存的虚拟地址的特定范围。又一候选刷新机制称为特定地址范围的并行刷新,还称为并行刷新,在其中分配多个处理器并行执行高速缓存刷新以减小延迟。每个处理器刷新虚拟地址的部分范围,例如如果四个处理器刷新的虚拟地址范围为4兆字节,将分配每个处理器刷新该虚拟地址范围的四分之一。图1是根据一个实施例的多处理器计算系统100的示例结构示意图。计算系统100包括一个或多个群集110,以及每个群集110进一步包括一个或多个处理器112。每个群集110可经由高速缓存一致性接口(cachecoherenceinterconnect)140及存储器控制器150存取系统存储器130(例如,DRAM或其它易失性或非易失性随机存取存储器)。应理解,计算系统100可包括任意数量的群集110,该群集110可具有任意数量的处理器112。在一个实施例中,计算系统110可以为移动计算设备和/或通信设备(例如,智能手机、平板电脑或笔记本电脑等)的一部分。在一个实施例中,计算系统100可以为云计算系统的一部分。图1还示出了每个处理器112具有其专属的层1(L1)高速缓存115,以及每个群集110包括由相同群集中的处理器112共享的层2(L2)高速缓存116。高速缓存115及116中的一些或所有的高速缓存可以为N-集合/关联路径高速缓存(N-set/way-associativecache)。也就是说,每个系统存储器位置可以映射至高速缓存中的N个位置,其中N为正整数。L1高速缓存115及L2高速缓存116为计算系统100使用的多级高速缓存层次结构的一部分。尽管示出了两级高速缓存,在一些实施例中,计算系统100可具有多于两级的高速缓存层次结构。例如,L1高速缓存及L2高速缓存中的每个还可包括多个高速缓存层级。图2是根据一个实施例的群集110的例子的示意图。在该例子中,群集110包括四个处理器112(例如,P0,P1,P2及P3),其中P1是去激活的(例如,在断电或低电量状态),以及P0,P2及P3是激活的。每个处理器112包括处理电路114,其用于执行通用目的和/或特定目的的计算任务。每个处理器112还包括存储器管理单元(MemoryManagementUnit,MMU)117,其用于将虚拟地址转译为物理地址。每个处理器112还包括高速缓存控制器113,控制其专属的L1高速缓存115的操作(包括高速缓存刷新)。应理解,群集110可包括任意数量的处理器,其中一个或多个处理器可以为去激活的。在一个实施例中,每个群集110中的L1高速缓存115及L2高速缓存116使用物理地址作为索引,以确定所请求的数据项是否出现在它们的内部存储器中,以及如果命中则存取该数据项。然而,运行在处理器112上的应用一般使用虚拟地址引用数据位置。因而,指定高速缓存刷新的地址范围的请求一般指示虚拟地址的范围。在一个实施例中,MMU117可包括或使用一个或多个转译缓存(TranslationLook-asideBuffer,TLB),用于存储虚拟地址及它们对应的物理地址之间的映射关系。TLB存储页表(pagetable)的若干条目,包含最可能引用的转译地址(例如,最常用的转译地址或基于更换策略存储的转译地址)。在一个实施例中,每个高速缓存115及116可与TLB关联,其中TLB存储高速缓存可能使用的转译地址。如果不能在TLB中找到转译地址,经由高速缓存一致性接口140(图1)向存储器控制器150(图1)发送未命中地址的信号,存储器控制器150从系统存储器130或计算系统100的其它地方,取回包含所请求的转译地址的页表数据(pagetabledata)。在一个实施例中,群集110还包括侦测控制单元(SnoopControlUnit,SCU)119,其向与SCU119所在(“主群集”)的相同群集110或不同群集110中的任意处理器112,提供自己的高速缓存115及116的内容及状态。SCU119还使能在其主群集中的处理器112,以找到在哪个其它群集中的哪个处理器在其高速缓存中有数据副本。一个群集110中的SCU119可直接与在另一群集110中的SCU119通信,以高效地交互它们各自的高速缓存数据的内容及状态。在一个实施例中,高速缓存块的状态可指示该高速缓存块是否已被修改、是否具有在系统存储器外的一个或多个有效副本、是否已被无效等。高速缓存块是指高速缓存中固定大小的数据块,其是系统存储器130与高速缓存之间进行数据传输的基本单元。在一个实施例中,SCU119跟踪当前哪个高速缓存块在哪个高速缓存中。更具体地,对于SCU119监控的每个高速缓存,SCU119存储出现在高速缓存中的所有高速缓存块的物理标签(其中每个为物理地址的一部分)。在图2的例子中,SCU119可存储其主群集中的四个处理器(P0,P1,P2及P3)的L1高速缓存115的所有高速缓存块的物理标签以及其主群集中的L2高速缓存116的所有高速缓存块的物理标签。这些物理标签还称为SCU标签。因而,给SCU119数据副本的物理地址,SCU119可向计算系统100中的任意处理器112通知其高速缓存115及116是否保存有数据副本。根据本发明实施例,处理器可选择最适合当前运行环境的高速缓存刷新机制。例如,当P0(或任意群集110中的任意处理器112)接收高速缓存刷新请求,其处理电路114可在候选高速缓存刷新机制中选择对于当前运行环境的最高效的高速缓存刷新机制。在一个实施例中,由于在去激活之前处理器112已经向系统存储器130回写其所有高速缓存的内容,去激活处理器112(例如,P1)中的L1高速缓存115不参与高速缓存刷新。应理解在可替换的实施例中,图2中的一些硬件组件可位于与所显示位置不同的位置。例如,在一些实施例中,SCU119可跨每个群集110的处理器112分布,或者可位于群集110之外的中心。在一些实施例中,MMU117和/或高速缓存控制器113可位于群集110之内以及处理器112之外。在这各个实施例中,无论其位置如何,SCU119、MMU117以及高速缓存控制器113执行下面将结合图3-6描述的操作。图3是根据一个实施例的用于选择高速缓存刷新机制的方法300的示意流程图。在步骤301中,处理器(例如,P0)接收请求,用以刷新从起始地址开始的地址范围。作为一种预防措施,用以阻止中断高速缓存的刷新过程,在步骤302中,禁止CPU热插拔(hot-plug)(即,不重启操作系统,在操作系统运行期间用于使能或禁止处理器的机制)及抢占(preemption)。在步骤303中,P0确定地址范围除以激活处理器的数量之商是否大于第一阈值T1。在一个实施例中,该数量的激活处理器包括计算系统100中的所有激活处理器。在一个实施例中,该数量的激活处理器可不包括处理器P0。在一个实施例中,该数量的激活处理器可仅包括那些当前可用的或者适合进行高速缓存刷新的激活处理器,例如,没有超载的激活处理器(即,激活处理器的工作量没有超过上限)。如果商(即,除法的结果)大于T1,那么处理器P0通知所有激活处理器执行完全的(即,集合/路径)高速缓存刷新。也就是说,完全刷新属于激活处理器的所有高速缓存。在步骤304中,所有激活处理器通过集合/路径执行高速缓存刷新,接着前进至步骤308。如果该商不大于T1,而在步骤305中该商大于T2(其中T2<T1),那么处理器P0可通知其它激活处理器执行并行刷新。在一个实施例中,处理器P0可选择其中哪个激活处理器参与并行刷新,例如,只有那些工作量没有超过上限的激活处理器参与并行刷新。在步骤306中,处理器P0及其它激活处理器执行并行刷新,接着前进至步骤308。将结合图5提供并行刷新的进一步细节。如果在步骤305中该商不大于T2,那么在步骤307中处理器P0执行特定地址范围的刷新,以及前进至步骤308。将结合图4提供特定地址范围的刷新的进一步细节。在步骤308中,当高速缓存刷新过程终止时,使能CPU热插拔机制及抢占。在一个实施例中,T1及T2均为配置的数字,可根据高速缓存大小、处理器能力和/或运行条件调整其大小。在一些实施例中,确定刷新机制时可考虑包括所请求的刷新地址范围、计算系统中激活处理器的数量以及地址范围与激活处理器数量之商等因素中的一个或多个。在一些情况中,处理器(例如,P0)可接收没有指示地址范围的请求,这意味着当前激活处理器可存取的所有高速缓存都将被刷新。该请求可指向一个群集或多个群集中的高速缓存。该请求的接收者(例如,P0)向受影响的群集(affectedcluster)中的激活处理器转发该请求,接着受影响的群集中的这些激活处理器将刷新它们各自的高速缓存。图4是根据一个实施例的特定地址范围的刷新方法400的示意流程图。尽管在这个例子中使用处理器P0,应理解方法400可由计算系统100(图1)中的任意激活处理器执行,该任意激活处理器接收高速缓存刷新请求以及选择用于高速缓存刷新的特定地址范围的刷新机制。此外参考图2及图3,如果在图3的步骤307中选择特定地址范围的刷新,那么在步骤401中处理器P0发出特定地址范围的刷新命令。在步骤402中,处理器P0的MMU117将该命令中指示的虚拟地址(简称为“VA”)范围转译为物理地址(简称为“PA”)。在步骤403,处理器P0的高速缓存控制器113确定其L1高速缓存115中是否包含该物理地址或其中的至少一部分。如果L1高速缓存115包含物理地址的任意部分,那么在步骤404中处理器P0将那些物理地址的内容刷新至系统存储器130。另外,在步骤405中,主群集(与处理器P0在相同的群集)的SCU119通过检查SCU标签,识别相同的主群集中的哪个其它处理器112已经缓存了物理地址的至少一部分,以及在步骤406中请求这些其它处理器从它们的L1高速缓存115刷新物理地址的该部分。SCU标签可指示所请求的物理地址是由主群集中除了处理器P0外的处理器拥有,或者由主群集中的多个处理器共享。在一个实施例中,除了主群集,如果其它群集拥有所请求的物理地址的任意部分,主群集的SCU119可请求其它群集的SCU检查它们的SCU标签,以及使其它群集的处理器刷新它们的高速缓存(包括L1及L2高速缓存)的一部分。在步骤407中,SCU119还确定其L2高速缓存116(在主群集中)是否包含物理地址的任意部分。如果包含,将L2高速缓存116中的物理地址的该部分刷新至系统处理器130。图5是根据一个实施例的并行刷新的方法500的示意流程图。尽管在这个例子中使用处理器P0,应理解方法500可由计算系统100(图1)中的任意激活处理器执行,该任意激活处理器接收高速缓存刷新请求以及选择用于高速缓存刷新的并行刷新机制。该方法500的并行处理部分至少包括图5中虚线框所包括的步骤。此外请参考图2及图3,如果在图3的步骤306中选择并行刷新,那么在步骤501中,处理器P0发出并行刷新命令以指示参与并行刷新的激活处理器开始高速缓存刷新。在一个实施例中,处理器P0可以为参与并行刷新的处理器中的一个。在一个可替换的实施例中,处理器P0自己可不参与并行刷新。在一个实施例中,处理器P0可选择激活处理器中的哪个处理器参与并行刷新,例如只有工作量没有超过上限的那些激活处理器参与并行刷新。所选择的处理器可在相同的群集中或者跨多个群集。在这个例子中,处理器P0及P1为参与并行刷新的处理器。处理器P0发出的命令包括分配给参与并行刷新的每个处理器的所请求的地址范围的不同部分(distinctportion)。例如,分配参与并行刷新的每个激活处理器刷新虚拟地址的不同子集(VA0或VA1)。在这个例子中,将第一地址范围(VA0)分配给P0,以及将第二地址范围(VA1)分配给P1。在一个实施例中,在步骤502中,每个参与并行刷新的处理器的MMU117将指定的虚拟地址范围转译为物理地址。在这个例子中,处理器P0的已转译的物理地址为PA0,处理器P1的已转译的物理地址为PA1。在步骤503中,每个参与并行刷新的处理器的高速缓存控制器113确定其L1高速缓存115是否包含已分配的物理地址(即,处理器P0及P1的已分配的物理地址分别为PA0及PA1)或者已分配的物理地址的至少一部分。如果其L1高速缓存115包含已分配的物理地址的任意部分,那么在步骤504中处理器将这些地址的内容刷新至系统存储器130。另外,主群集的SCU119确定主群集中的处理器112是否缓存PA0(PA1与其相似)的任意部分,其中该处理器112不是该地址范围的已分配的处理器。SCU119检查SCU标签,以及在步骤506中,请求这些处理器从它们的L1高速缓存115刷新PA0及PA1的该部分。SCU标签可指示所请求的物理地址是由主群集中的处理器拥有或共享,其中该处理器不是该地址范围的已分配的处理器。在一个实施例中,如果存在没有参与并行刷新的群集,主群集的SCU119可请求其它非参与并行刷新的群集的SCU检查它们的标签,以及如果其它非参与并行刷新的群集的处理器拥有物理地址的任意部分,使其它非参与并行刷新的群集的处理器刷新它们的高速缓存(包括L1及L2高速缓存)的一部分。在上述例子的步骤505及506中,主群集的SCU119可并行处理来自相同的主群集中的所有处理器的请求。因而,在上述例子中,主群集的SCU119可并行处理来自处理器P0的请求以及来自处理器P1的请求,以分别为它们的已分配的地址范围(PA0及PA1)检查SCU标签。在一个实施例中,其中参与并行刷新的处理器位于多个群集中,这些参与并行刷新的群集的SCU119可并行执行步骤505及506。图6是根据一个实施例的计算系统(例如,图1的计算系统100)中的高速缓存刷新的方法600的示意流程图。该计算系统包括多个处理器,包括第一处理器(其可以为图1的任意群集110中的任意激活处理器112)。方法600从步骤601开始,在其中第一处理器接收到向系统存储器刷新高速缓存的至少一部分的信号(例如,请求或命令等)。高速缓存耦接至多个激活处理器,包括计算系统中的第一处理器。在步骤602中,基于运行环境及该信号中指示的刷新长度,第一处理器在多个候选刷新机制中确定目标刷新机制,以及还确定用于执行刷新机制的一个或多个激活处理器。在一个实施例中,运行环境包括计算系统中激活处理器的数量。诸如每个处理器的系统工作量、每个处理器的可用性以及所请求的地址范围的附加因素还可包括在运行环境中。在确定刷新机制之后,在步骤603中,计算系统根据所选择的目标刷新机制,将高速缓存刷新至系统存储器。参与高速缓存刷新的处理器取决于所选择的目标刷新机制。已经结合图1及图2的示例实施例描述了图3-6的流程图的操作。然而,应理解图3-6的流程图的操作可由除结合图1及图2所讨论的之外的那些本发明实施例执行,以及结合图1及2所讨论的实施例可执行不同于结合流程图所讨论的那些操作。虽然图3-6的流程图显示了本发明一些实施例的执行操作的特定顺序,应理解这些顺序是示例性的(例如,可替换的实施例可用不同的顺序执行这些操作,合并一些操作或重叠一些操作等)。虽然已经通过若干实施例的方式描述本发明,应理解本领域的技术人员可理解本发明不限于所描述的实施例,以及可以在所附权利要求的精神和范围内实现修改和变换。因而,说明书应视为示意而非限制的目的。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1