在计算系统内刷新快取内容的方法与用于刷新快取内容的系统与流程

文档序号:14554642阅读:114来源:国知局
本发明的实施例是关于一种计算系统内的存储器管理,更具体地,是关于多核计算系统内的快取刷新机制(cacheflushingmechanism)。
背景技术
::在一个多核计算系统内,每个核心都具有自己的快取来储存数据的拷贝,这份数据也储存在系统存储器内。一个快取是一个比系统存储器更小、更快的存储器,一般位于处理器的同个芯片上。快取通过降低芯片外存储器存取而提升系统性能。大多数处理器有独立的指令快取与数据快取。数据快取一般具有多级的层级组织,更小更快的快取有更大更慢的快取作为后备。一般来说,在存取到芯片外的系统存储器之前,多级快取的存取首先检查最快的level-1(l1)快取;如果l1有错失/没命中(miss),然后检查下个次快的level-2(l2)快取,如此继续。一个常用的快取维护策略叫做“回写(write-back)”策略。在回写策略中,处理器只更新在本地快取中的数据项目。对系统存储器的写入被延迟到包含数据项目的快取线(cacheline)要被另一个快取线替代的时候。在回写操作之前,快取内容可能会比保存在系统存储器中的内容较新且不一致。快取与系统存储器之间的数据一致性可以通过将快取中的内容刷新(即回写)到系统存储器中实现。除了快取线替代,快取线可根据快取刷新命令回写到系统存储器中。在直接存储器(direct-memoryaccess,dma)设备存取要求一个区块的数据时需要快取刷新,例如当视频处理器上运行的多媒体应用想要从系统存储器读取最新数据时。可是,需要存储器数据的应用可能需要等待快取刷新操作完成。所以,快取刷新导致的延迟影响了用户的体验。因此,需要改善快取刷新的性能。技术实现要素:因此,本发明为了解决快取刷新导致的延迟的技术问题,特提供一种新的在计算系统内刷新快取内容的方法与用于刷新快取内容的系统。本发明提供一种在计算系统内刷新快取内容的方法,该计算系统包含多个簇,每个簇包含多个处理器,该方法包含:通过一快取维护硬件引擎从一处理器接收一请求,来刷新该快取内容到存储器;通过该快取维护硬件引擎产生命令,来刷新该快取内容,以从该多个处理器移除产生该多个命令的工作负荷;以及发送该多个命令给该多个簇,其中每个命令指定一物理地址,该物理地址标示要被刷新的一快取线。本发明另提供一种用于刷新快取内容的系统,该系统包含:多个簇,每个簇包含多个处理器与多个快取;存储器,通过快取一致性互连耦接到该多个簇;以及快取维护硬件引擎,用于:从该多个处理器中的一个接收请求来刷新该快取内容到该存储器;产生多个命令来刷新该快取内容,从而从该多个处理器移除产生该多个命令的工作负荷;以及发送该多个命令或使该多个命令发送到该多个簇,每个命令指定一个物理地址,该物理地址标示要被刷新的一快取线。本发明的在计算系统内刷新快取内容的方法与用于刷新快取内容的系统能够减少快取刷新导致的延迟。本发明的这些及其他的目的对于本领域的技术人员来说,在阅读了下述优选实施例的详细说明以后是很容易理解和明白的,所述优选实施例通过多幅图予以揭示。附图说明图1显示根据本发明一实施例的多处理器计算系统100的结构示意图。图2显示根据本发明一实施例的产生快取刷新命令的方法200的流程图。图3显示根据本发明另一实施例的多处理器计算系统300的结构示意图。图4显示根据本发明另一实施例的产生快取刷新命令的方法400的流程图。图5a显示确定一个给定物理地址是否存在探听过滤器380中的例子。图5b显示探听过滤器380的另一例子。图5c显示探听过滤器380的又一例子。图6显示根据本发明一实施例的整个系统刷新的方法600的流程图。图7显示根据本发明一实施例的计算系统内快取刷新的方法700的流程图。具体实施方式本说明书及权利要求书使用了某些词语代指特定的组件。本领域的技术人员可理解的是,制造商可能使用不同的名称代指同一组件。本文件不通过名字的差别,而通过功能的差别来区分组件。在以下的说明书和权利要求书中,词语“包括”是开放式的,因此其应理解为“包括,但不限于...”。需要注意的是,这里描述的“多核处理器计算系统”是一个“多核心处理器系统”。在一个实施例中,每个处理器可包含一个或多个核心。在另一个实施例中,每个处理器等同于一个核心。这里的处理器可包含中央处理器(cpu),图像处理器(gpu),数字信号处理器(dsp),多媒体处理器,以及任何可存取系统存储器的处理器。一个簇(cluster)可实施为包含一个或多个处理器的一组处理器。需要注意的是,这里的术语“快取刷新”是指把脏的(即修改过的)快取数据条目(cachedataentries)写入到系统存储器内。这里的术语“系统存储器”等于主存储器,例如动态随机存取存储器(dram)或其他易失性或非易失性存储器设备。快取数据条目在被回写到系统存储器之后可被标记为无效(invalidated)或分享的(shared),这取决于系统的具体实施。快取线(cacheline)指快取中一个固定尺寸的数据区块,这是一个系统存储器与快取之间数据传输的基本单元。在一个实施例中,系统存储器的物理地址可包含第一部分与第二部分。一个快取线可通过系统存储器物理地址的第一部分来示别(identify)。系统存储器物理地址的第二部分(也被叫做偏移)可标示快取线内的一个数据字节。在后面的说明中,与快取维护操作(cachemaintenanceoperations)有关的术语“物理地址”是指系统存储器物理地址的第一部分。系统存储器物理地址的第一部分与第二部分的比特数量可以因系统不同而不同。本发明的实施例提供一种快取维护硬件引擎(也被叫做快取维护(cachemaintenance,cm)引擎)来有效将快取内容刷新到系统存储器中。cm引擎是一个专用的硬件单元,用来执行快取维护操作,包含产生命令来刷新快取内容。当一个处理器或在处理器上运行的应用决定刷新快取内容时,处理器发送一个请求给cm引擎。根据该请求,cm引擎产生命令来刷新快取内容,一次一个快取线,使得产生命令的工作负荷从处理器移除。处理器的请求可指示一个范围的物理地址被从快取刷新,或者指示所有快取都全被刷新。当cm引擎产生命令时,处理器可继续执行有用的任务而不需要等待命令产生并发出。图1显示根据本发明一实施例的多处理器计算系统100的结构示意图。计算系统100包含一个或多个簇110,每个簇110还包含一个或多个处理器112。每个簇110可通过快取一致性互连(cachecoherenceinterconnect,cci)140与存储器控制器150连接来存取系统存储器130。在一些实施例中,不同的簇110可包含不同类型的处理器112。在一个实施例中,cci140与存储器控制器150之间的通信链接,以及存储器控制器150与系统存储器130之间的通信链接,使用高性能、高时钟频率的协议;例如先进可扩展接口(advancedextensibleinterface,axi)协议。在一个实施例中,所有的簇110使用支持系统广泛一致性(systemwidecoherency)的协议与cci140通信,例如axi一致性扩展(axicoherencyextensions,ace)协议。需要理解的是,axi与ace协议是非限制性的例子,不同实施例中可以用不同协议。还需要理解的是,许多硬件组件因叙述方便而略去,且计算系统100可包含具有任何数量的处理器112的任何数量的簇110。在一个实施例中,计算系统100可以是移动计算及/或通信设备(例如智能手机、智能手表、平板电脑、笔记本电脑等等)的一部分。在一个实施例中,计算系统100可以是一个电脑、家用电器、服务器或云计算系统的一部分。图1还显示每个处理器112可具有对快取的多级的存取。例如,每个处理器112包含其自身的level-1(l1)快取115,而且每个簇110包含level-2(l2)快取116,其在同个簇110内被处理器112共享。虽然图中显示两级的快取,在计算系统100中的一些实施例中可具有超过两级的快取层级。例如,l1快取115与l2快取116的每个还可包含多个快取层级。在一些实施例中,不同簇110可具有不同数量的快取层级。在一个实施例中,每个簇110的l1快取115与l2快取116使用物理地址作为所储存的快取内容的索引。可是,在处理器112上运行的应用一般使用虚拟地址来指向数据位置。在一个实施例中,来自一个应用的请求首先被转换成一个物理地址范围,该请求指定了一个快取刷新的虚拟地址范围。应用所运行的处理器112然后发送一个快取刷新请求给cm引擎148,其指定该物理地址范围。各种已知技术可用来转换虚拟地址为物理地址。在一个实施例中,每个处理器112包含或耦接到存储器管理单元(memorymanagementunit,mmu)117,其负责把虚拟地址转换为物理地址。mmu117可包含或使用一个或多个转换检测缓冲区(translationlook-asidebuffers,tlb)来储存虚拟地址与对应物理地址之间的映射。tlb储存一个页表(pagetable)的多个条目,该页表包含最可能被引用到的地址转换(例如最近使用的转换或基于一个替换策略储存的转换)。在一个实施例中,快取115与116的每个可与储存该快取最有可能用到的地址转换的tlb相关。如果一个地址转换无法在tlb中找到,一个错失地址信号(missaddresssignal)会通过cci140发给存储器控制器150,该信号会从系统存储器130或从计算系统100的其他地方取回包含该请求的地址转换的页表数据。在处理器112获取快取刷新的物理地址范围(通过地址转换或其他方式)之后,处理器112发送一个快取刷新请求给cm引擎148指定的物理地址范围。在一个实施例中,cm引擎148可以是cci140的一部分,如实线方框148所示。图1还显示了cm引擎148可存在的另外的位置。在第一个其他实施例中,cm引擎148a可以位于cci140之外,并耦接到cci140;例如,cm引擎148a可以是一个快取一致性互连(cci)的主控,其由虚线框148a表示。在第一个其他实施例中,cm引擎148a可通过处理器112使用的同一个接口协议或其变形的接口协议连接到cci140,例如ace或ace-lite协议。在第二个其他实施例中,cm引擎148b可在簇110内并耦接到簇110中的一个或多个处理器112,例如cm引擎148b可以是一个协处理器,其由虚线框148b表示。为了说明之便,下文中使用术语“cm引擎148”;可以应当了解cm引擎148,或执行cm引擎148(例如cm引擎148a或148b)的操作的硬件单元,可以位于图1中的计算系统100内的另一个位置。需要理解的是,图1中的例子是为了展示本发明而非限制本发明。在cm引擎148接收指定一个物理地址范围的快取刷新请求之后,cm引擎148产生一系列的命令,每个命令都指定物理地址范围内的一个物理地址。图2显示根据本发明一实施例的产生快取刷新命令的方法200的流程图。在一个实施例中,方法400可由图1的计算系统100所执行;更具体地,由图1的cm引擎148所执行。方法200从步骤210开始,cm引擎148从处理器接收一个指定物理地址范围的快取刷新请求。cm引擎148从物理地址范围产生快取刷新命令。更具体地,在步骤220,初始化一个循环(loop),循环的索引pa=物理地址范围的起始地址。在步骤230,cm引擎148产生并广播一个快取刷新命令给所有簇,其指定了物理地址pa。循环索引pa在步骤240增加一个偏移量(其中偏移量=快取线的尺寸)指向下个物理地址,cm引擎148重复步骤230来产生并广播一个指定物理地址pa的快取刷新命令。方法200重复步骤230与240直到在步骤250达到物理地址范围的末尾。在一个实施例中,cm引擎148可通知开启快取刷新请求的处理器或应用来指示快取刷新命令的产生在步骤260完成。在一些场景中,处理器可请求刷新一个物理地址范围,但是一些范围内的物理地址可能不在任何快取中。产生一个不存在于计算系统的任何快取中的快取刷新命令是不必要的,并且是时间与系统资源的浪费。在一些实施例中,计算系统可使用一个机制来跟踪哪些数据条目被快取了,在哪些簇快取了数据条目,以及每个快取数据条目的状态。这种机制的一个例子叫做探听(snooping)。对于具有共享存储器的多处理器系统系统来讲,大量采用了以探听为基础的硬件快取一致性。如果一个处理器的本地快取存取的结果是错失(miss),处理器能探听其他处理器的本地快取来确定是否那些处理器包含最新的数据。可是,大部分的探听请求结果都是错失回复,因为大部分应用仅有很少共享数据。探听过滤器(snoopfilter)是cci140(图1)中的一个硬件单元,其帮助消除这些处理器之间的多余探听。图3显示根据本发明另一实施例的多处理器计算系统300的结构示意图。多处理器计算系统300可包含图1所示同样的组件,并额外在cci140包含探听过滤器380。探听过滤器380记录计算系统300内所有快取线的状态。在一个实施例中,快取线的状态可指示快取线是否被改变、在系统存储器外有一个或多个有效拷贝、已经被无效了等等。当处理器112碰到其本地快取中的请求快取线的错失,处理器112能请求cci140来查找探听过滤器380来确定计算系统300内其他任何快取中是否有请求的快取线。如果探听过滤器380指示其他快取中没有请求的快取线,那么处理器之间的探听请求就能被消除。如果另一快取具有请求的快取线,探听过滤器380还可指示哪个簇或哪些簇保持有请求的快取线的最新的拷贝。在一个实施例中,探听过滤器380储存快取线的物理地址来指示快取线存在于一个或多个簇110中。而且,給定数据条目的物理地址,探听过滤器380能标示计算系统300中在自己的快取内保持数据条目拷贝的一个或多个簇。在一个实施例中,cm引擎148可使用探听过滤器380来过滤其快取刷新命令,使得所有发到簇110的命令都能命中,即所有过滤的命令都指向在至少一个簇110中存在的快取线。所以,如果快取刷新命令指定一个不存在于探听过滤器380中的物理地址,该命令不会发给任何簇110。图4显示根据本发明另一实施例的产生快取刷新命令的方法400的流程图。在一个实施例中,方法400可由图3的计算系统300执行。方法400从步骤410开始,cm引擎148从处理器接收一个指定物理地址范围的快取刷新请求。cm引擎148通过物理地址范围产生快取刷新命令。更具体地,在步骤420,初始化一个循环,该循环索引是pa=物理地址范围的起始地址。在步骤430确定物理地址pa是否匹配探听过滤器380中储存的物理地址;匹配指示具有物理地址pa的数据项目在快取中。确定是否物理地址匹配探听过滤器380中储存的物理地址可包含比较物理地址与探听过滤器380中储存的物理地址。比较可由cm引擎148或探听过滤器380作出,下面将根据图5a-5c进行具体说明。如果物理地址pa匹配探听过滤器380中储存的物理地址,在步骤440,一个指定物理地址pa的快取刷新命令发送给探听过滤器380所标示的一个或多个对应簇。循环索引pa在步骤450增加一个偏移量(其为快取线的尺寸)指向下个物理地址。方法400重复步骤440与450直到步骤460中达到物理地址范围的末尾。在一个实施例中,cm引擎148可通知开启快取刷新请求的处理器或应用,来指示快取刷新命令的产生在步骤470完成。图5a显示确定一个给定物理地址是否存在探听过滤器380中的例子。在此例子中,cm引擎148将其产生的每个快取刷新命令都发给探听过滤器380。当cm引擎148发命令给探听过滤器380时,探听过滤器380可仅转发指定物理地址储存在探听过滤器380的命令给一个或多个对应簇。也就是说,如果命令指定的给定物理地址匹配探听过滤器380中存储的物理地址,则探听过滤器380转发命令给一个或多个对应簇。如果给定物理地址并不匹配探听过滤器380中任何储存的物理地址,则探听过滤器380忽略该命令。图5b显示探听过滤器380的另一例子,其中探听过滤器380包含两个或更多过滤器库(filterbank)511。每个过滤器库511负责跟踪系统存储器的物理地址空间的不同位置的快取线。例如,在有两个过滤器库511的情况下,一个过滤器库511可负责偶数物理地址,另一过滤器库511可负责奇数物理地址。当cm引擎148发送命令给过滤器库511,并行的过滤器库511可仅仅转发指定过滤器库511中储存的物理地址的命令给一个或多个对应簇。也就是说,每个过滤器库511转发命令给一个或多个对应簇,如果命令指定的给定物理地址匹配过滤器库511中储存的物理地址。如果给定物理地址不匹配过滤器库511中任何储存的物理地址,过滤器库511忽略该命令。图5c显示探听过滤器380的又一例子,其中cm引擎148仅产生匹配探听过滤器380中储存的物理地址的命令。在一个实施例中,cm引擎148可存取探听过滤器380中储存的物理地址(即探听过滤器条目,sf条目),且比较储存的物理地址与请求的物理地址范围来确定是否每个储存的物理地址在请求的物理地址范围内。这在请求的物理地址范围很大时(例如大于一个阈值)有帮助。在一些情况下,处理器112可发送一个没有地址范围的请求;例如当处理器112请求整个系统刷新。也就是说,所有可存取的快取都要被刷新。当整个系统刷新的情况下,cm引擎148可仅仅产生指定储存在探听过滤器380中的物理地址的命令。图6显示根据本发明一实施例的整个系统刷新的方法600的流程图。在一个实施例中,方法600由图3的cm引擎148执行。在步骤610,cm引擎148在时间t接收整个系统刷新的请求。作为回应,在步骤620,cm引擎148可拷贝在时间t或之前存在於探听过滤器380中的所有探听过滤器条目。或者,探听过滤器380可在时间t停止更新探听过滤器条目直到命令产生的完成,且cm引擎148可在产生快取刷新命令时存取探听过滤器380。cm引擎148在步骤630中循环检查(loopsthrough)在时间t或之前就存在於探听过滤器380内的探听过滤器条目,並产生相對應的物理地址的快取刷新命令。cm引擎148然后发送每个产生的命令给一个或多个对应簇,这些对应簇保持了由探听过滤器380内的物理地址指定的快取线。在一个实施例中,cm引擎148可通知开启快取刷新请求的处理器或应用,来指示快取刷新命令的产生在步骤640完成。图7显示根据本发明一实施例的计算系统内快取刷新的方法700的流程图。计算系统包含多个簇,每个簇包含多个处理器;计算系统的非限制性例子包含图1的计算系统100与图3的计算系统300。在一个实施例中,方法700开始是通过快取维护硬件引擎(例如图1或图3的cm引擎148)从处理器接收请求来刷新快取内容到存储器(步骤710)。作为回应,快取维护硬件引擎产生命令来刷新快取内容,从而从处理器移除产生命令的工作负荷(步骤720)。发送命令给簇,其中每个命令指定了标示需要被刷新的快取线的一个物理地址(步骤730)。图2,4,6及7的流程图的操作已经参考图1与3中的实施例进行说明。可是,应该理解图2,4,6与7的流程图的操作可以用不同于图1与3中的实施例来实作,且参考图1与3所讨论的实施例可执行不同于上述流程图的操作。虽然图2,4,6与7的流程图显示本发明按照特定顺序执行的操作,应理解这种顺序仅仅是举例(例如不同的实施例可以不同的顺序执行,或者将一些操作进行合并操作,或者将一些操作进行略去,等等)。本文描述的主题有时展示包含的不同组件,或连接到不同其他组件。需要了解,这样的描绘的架构仅仅是为了举例说明,实际上,可以采用许多其他的架构来实施并实现同样功能。从概念上说,任何实现同样功能的组件的安排都是有效“相关的”,只要期望的功能可以达到。而且,任何两个组合来实现一特定功能的组件都可以被看作是彼此“相关”,只要期望的功能达到,无论架构或中间组件。同样,两个如此相关的组件可被看作是“功能性连接”,或“功能上连接”到彼此,来达到期望的功能,任何两个能够如此相关的组件也可被看作“功能性连接”到彼此来达到期望的功能。功能性连接的具体实施例包含,但不限于物理上相连,以及/或物理上交互的组件,以及/或无线可交互的,以及/或无线交互的组件,以及/或逻辑交互,以及或逻辑可交互组件。而且,应了解本领域技术人员,总体来说,本文所用的词汇,特别是权利要求中所用的,例如后附的权利要求,总体上应被解读为“开方式”词汇,例如,词汇“包含”应该被解读为“包含但不限于”,而词汇“具有”也应被解读为“至少有”,词汇“包括”应该被解读为“包含但不限于”等等。本领域的技术人员将注意到,在获得本发明的指导之后,可对所述装置和方法进行大量的修改和变换。相应地,上述公开内容应该理解为,仅通过所附加的权利要求的界限来限定。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1