为dma控制器提供高速缓存管理命令的系统和方法

文档序号:6539352阅读:189来源:国知局
专利名称:为dma控制器提供高速缓存管理命令的系统和方法
技术领域
本发明一般地涉及存储管理,尤其涉及通过使用直接存储器存取(DMA)机制的高速缓存的软件程序管理。
背景技术
在多处理器设计中,DMA机制例如DMA引擎或DMA控制器用来将信息从一种类型的存储器移至不包括第一存储器类型(例如高速缓存)的另一种存储器类型,或者从一个存储器位置移至另一个。特别地,DMA机制将信息从系统存储器移至处理器的局部存储器。当DMA控制器试图将信息从系统存储器移至处理器的局部存储器时,从存储器中取回和装入信息到处理器局部存储器中可能存在延迟。移动信息可能消耗多个处理器周期。延迟是许多因素的累积,包括存储器等待时间和多处理器系统中的一致性动作。即使在单处理器系统中,存储器存取可能消耗许多周期。在具有多种类型的存储器以及一些存储器与处理器之间相对大的距离的多处理器系统中,处理器或DMA控制器等待存储器存取的问题更加严重。
处理器可以提供有高速缓存,以帮助减小处理器访问存储器的延迟,从而提高运行在处理器上的软件的性能。处理器可以提供管理高速缓存的指令以进一步提高性能。
因此,在多处理器系统中存在通过使用直接存储器存取(DMA)机制的高速缓存软件程序管理的需要,以减小DMA传输时存储器存取的等待时间。

发明内容
本发明提供一种在支持DMA机制和高速缓存的系统中提供高速缓存管理命令的方法和系统。DMA机制由处理器建立。运行在处理器上的软件产生高速缓存管理命令。DMA机制执行命令,从而启动高速缓存的软件程序管理。


为了更完整地理解本发明及其优点,现在参考结合附随附图进行的下面的描述,其中图1显示说明具有可高速缓存的DMA机制和DMA高速缓存的非对称异构多处理器计算机系统的框图;图2显示说明配置以执行高速缓存管理的DMA命令的DMA控制器的扩展视图的框图;图3显示适用于图1和图2中所示DMA机制的高速缓存机制的操作的流程图;以及图4显示说明DMA高速缓存管理的命令的展开的流程图。
具体实施例方式
在下面的讨论中,许多具体细节被陈述以提供本发明的彻底理解。但是,对本领域技术人员将是显然的,本发明可能不以这种具体细节的形式实践。在其他实例中,众所周知的要素已经以示意图或框图的形式说明,以便不将本发明遮盖在不必要的细节中。
还应当注意,除非另外指示,在这里描述的所有功能可能以硬件或软件,或者其某种组合来执行。但是,在优选实施方案中,功能由处理器例如计算机或电子数据处理器,根据编码以执行这种功能的代码例如计算机程序代码,软件,和/或集成电路来执行,除非另外指示。
图1显示说明具有可高速缓存DMA机制和DMA高速缓存的非对称异构多处理器计算机系统的框图。具有高速缓存的DMA机制将是所谓可高速缓存的DMA机制,以及它的高速缓存,DMA高速缓存。
非对称异构多处理器计算机系统100包括传统多处理器方案中的一个或多个控制处理器106(PU),其中公共共享存储器或系统存储器104通过可高速缓存的DMA机制紧密耦合到一个或多个相关非对称处理器108(APU),每个包括处理器110和局部存储器112。
APU 108通过到和从它们的局部存储器112的DMA操作间接地访问公共共享存储器或系统存储器104。DMA操作由DMA控制器150执行。DMA控制器150由连接114连接到DMA高速缓存102,并且DMA高速缓存102由连接116连接到系统存储器104。DMA控制器150也由连接124直接连接到系统存储器104。
APU 108的处理器110和APU 108的局部存储器112每个分别由连接120和122连接到DMA控制器150。
在备选实施方案中,DMA控制器150进一步直接连接到PU 106。该连接用来使得PU 106能够发出DMA命令和DMA高速缓存管理命令。该连接为软件提供更多的灵活性。在具有DMA控制器150和PU106之间的该直接连接的备选实施方案中,也存在增加到DMA控制器150中、用于由PU 106发出的命令的相关DMA命令队列。参看图2的讨论,下面,关于DMA命令队列的更多信息。两个队列之间的选择复用器,没有显示,(APU队列和PU队列)以确定两个队列中命令的执行顺序,也被增加。任何选择方法可以使用,例如循环法。
在备选实施方案中,一个或多个另外的高速缓存可以用来与所有PU 106接口。该一个或多个高速缓存将连接到PU 106和系统存储器。在备选实施方案中,不存在DMA高速缓存,而是存在连接到PU 106和系统存储器104的一个或多个高速缓存。在DMA控制器150上执行的命令影响连接到PU 106和系统存储器104的一个或多个高速缓存的操作。
数据取回到DMA高速缓存102。当DMA控制器150请求存储在DMA高速缓存102中的数据时,DMA控制器150不需要特地返回到系统存储器104以取回数据。代替地,DMA控制器150访问DMA高速缓存102以取回数据并将数据传送到局部存储器112。在DMA高速缓存102和局部存储器112之间传送数据比在系统存储器104和局部存储器112之间传送数据快许多倍。结果,运行在处理器110上的程序可以操作得更快。
图2是说明配置以执行由运行在APU 108或PU 106上的软件产生的高速缓存管理命令的DMA控制器200扩展视图的框图。运行在APU108或PU 106上的软件产生用于控制DMA高速缓存210的操作的命令。命令从APU 108或PU 106发送到DMA控制器200,然后执行。结果,运行在APU 108或PU 106上的软件程序控制DMA高速缓存210的管理。
DMA控制器200经由连接214从APU 108接收命令。命令可以放置在DMA命令队列202中。与命令相关联的参数提供信息,例如传输大小,标志,和寻址信息。DMA控制器展开和翻译逻辑组件204将由DMA命令及其参数描述的DMA操作展开并翻译成一个或多个较小的总线请求218,直到全部传输长度被满足。展开和总线请求的发出可以并行地执行。总线请求沿着多处理器一致性总线(MP一致性总线)232传递,该总线连接到DMA数据高速缓存210,以及其他存储器,例如局部存储器112和系统存储器104。数据通过连接224,226,228和230经由入站数据缓冲器208和出站数据缓冲器206在DMA数据高速缓存210和局部存储器112之间来回传递。MP一致性总线请求,数据传输,以及下一个总线请求的发出都可以并行地执行。
高速缓存管理的命令包括在高速缓存中存储数据,从高速缓存写入数据,清零高速缓存中的数据,以及将高速缓存中的数据标记为不再需要的命令。命令的参数指定待存储或写入数据的位置以及其他信息。当DMA高速缓存210实现时,命令由DMA控制器200的执行将管理DMA高速缓存210的操作。这些命令可以使用,即使DMA高速缓存没有实现。在这种实施方案中,命令由DMA控制器200的执行将影响保存DMA控制器正在传输的数据的其他高速缓存。
在本发明的一种实施方案中,参数包括类线(CL),标志(TG),传输大小(TS),有效地址高(EAH),和有效地址低(EAL)。TS表示命令操作于其上的数据的字节数。高速缓存管理控制命令都具有暗指的特定标志屏蔽。暗指的特定标志屏蔽防止具有相同标志ID的高速缓存管理控制命令和所有随后发出的命令执行,直到具有相同标志ID的所有先前发出的命令已经完成。EAH和EAL被组合或连接以产生有效地址。在一种实现中,EAH是地址的高32位而EAL是低32位。连接它们产生64位地址。具体命令包括1.数据高速缓存范围接触(Data_cache_range_touch)该命令包括对DMA控制器200的指示,即获取(也就是装入)命令将可能对由该命令指定的地址范围而发出。DMA控制器200试图将由有效地址和传输大小识别的数据范围带入相关DMA高速缓存中。该命令可以在不具有DMA高速缓存的实施方案中使用,以使得其他系统高速缓存将修改的数据存储到系统存储器中,对于要求存储器一致性的存储。将修改的数据存储到系统存储器中可以减小未来DMA传输的等待时间。该存储不一定使其他高速缓存中的线无效。该命令也可以用于软件维护的一致性。
2.用于存储的数据高速缓存范围接触(data_cache_range_touch_for_store)该命令包括对DMA控制器200的指示,即放置(也就是存储)命令将可能对由该命令指定的地址范围而发出。DMA控制器200试图将由有效地址和传输大小识别的数据范围带入相关DMA高速缓存中。与命令1对比,该命令通知DMA控制器200,存在修改数据的意向。多处理器系统可以使用该知识来将其他系统高速缓存中数据的拷贝标记无效(使无效),使得当前高速缓存是数据的唯一所有者。数据的唯一所有者可以修改数据而不需要执行任何一致性动作。该命令可以在没有DMA高速缓存的实施方案中使用,以使得其他系统高速缓存将修改的数据刷新到系统存储器中,对于要求存储器一致性的存储。将修改的数据刷新到系统存储器中可以减小未来DMA传输的等待时间。刷新使其他高速缓存中的行无效。该命令也可以用于软件维护的一致性。
3.数据高速缓存范围设置为零(data_cache_range_set_to_zero)该命令将由有效地址和传输大小指定的存储范围设置为零。在具有DMA高速缓存的实施方案中,该命令使得DMA控制器200获得与系统存储器区域相关联的高速缓存线的所有权,并且将DMA高速缓存中的数据置零。系统存储器的区域有效地置零。该命令可以在没有DMA高速缓存的实施方案中使用以将系统存储器的区域置零。在没有DMA高速缓存的实施方案中,系统存储器的区域用零写入。
4.数据高速缓存范围存储(data_cache_range_store)如果由有效地址和传输大小指定的数据块被认为已修改,它写入到主存储器。如果它在相关存储器的DMA高速缓存中修改,或者如果存储是要求存储器一致性的并且它在系统中任何高速缓存中被修改,它被修改。数据块可能保留在高速缓存中,但是不再被认为已修改。该命令可以在没有DMA高速缓存的实施方案中使用,以使得其他系统高速缓存将修改的数据存储到系统存储器,对于要求存储器一致性的存储。将修改的数据存储到系统存储器可以减小未来DMA传输的等待时间。该存储不一定使其他高速缓存中的线无效。该命令也可以用于软件维护的一致性。
5.数据高速缓存范围刷新(data_cache_range_flush)如果存储是要求存储器一致性的,并且由有效地址和传输大小指定的数据块在系统中任何一个高速缓存中被修改,数据块写到主存储器中并且在所有处理器的高速缓存中被使得无效。如果存储是要求存储器一致性的,并且由有效地址和传输大小指定的数据块在任何高速缓存中有效,相关高速缓存块被使得无效。
如果存储不是要求存储器一致性的,并且数据块在发出APU的DMA高速缓存中被修改,修改的块写到主存储器中并且在发出APU的DMA高速缓存中被使得无效。如果存储不是要求存储器一致性的,并且数据块在发出APU的DMA高速缓存中有效,线在与DMA控制器相关联的DMA高速缓存中被使得无效。
该命令可以在没有DMA高速缓存的实施方案中使用,以使得其他系统高速缓存将修改的数据刷新到系统存储器。将修改的数据刷新到系统存储器可以减小未来DMA传输的等待时间。刷新使得其他高速缓存中的线无效。该命令也可以用于软件维护的一致性。
许多备选或另外的命令以及命令形式可以使用。本领域技术人员可以容易地定义另外的DMA命令。这些包括,但并不局限于,数据高速缓存范围无效(data_cache_range_invalidate)和跨度命令形式。跨度接触例如访问非连续的数据块;例如,访问8块,跳跃64块,访问8块,跳跃64块。跨度接触可以在图形和矩阵操作中有用。另外,刷新或存储的不同形式可以使用。一般地说,DMA命令集可以被扩展以执行今天在处理器中发现的高速缓存管理的相同功能。
其他参数可以用于相同或其他DMA控制器体系结构。例如,命令可以引用实际地址而不是有效地址,或者不包括标志。命令可以引用待传输数据的起始和结束地址,而不是起始地址和传输大小。更简单地,命令可以每次在固定块大小的数据上操作。在那种情况下,没有传输大小参数或等价物将是必需的。
可能存在用于控制DMA高速缓存的DMA命令的许多不同形式,以及执行命令的许多不同方法。参数可能包括其他信息,或者可能包含仅寻址信息。如果命令在单个块数据上操作,那么不需要将命令展开成一个或多个更小的总线请求。每个命令将产生一个总线请求。
现在参考图3,显示说明适用于如图1中所示可高速缓存DMA机制的DMA装入的高速缓存机制的操作的流程图。图3包括使用高速缓存管理命令预取数据到DMA高速缓存中的步骤。
在步骤302中,DMA高速缓存管理命令被发出以预取数据到DMA高速缓存102中。在步骤304中,DMA机制开始执行从系统存储器到DMA高速缓存102的数据传输。例如,转向图1,DMA控制器150执行从系统存储器104到DMA高速缓存102的数据传输。返回到图3,在步骤306中,DMA装入请求被发出以从系统存储器中请求数据。在步骤308中,确定请求的数据是否在DMA高速缓存102中找到。如果在步骤308中请求的数据在DMA高速缓存102中找到(高速缓存命中),处理继续到步骤310,在那里请求的数据从DMA高速缓存102直接装入到局部存储器112。如果在步骤308中请求的数据没有在DMA高速缓存102中找到(高速缓存错过),处理继续到步骤312,在那里请求的数据从系统存储器104装入到局部存储器112。
作为在步骤302中发出的DMA高速缓存管理命令和在步骤304中执行的传输的结果,步骤308中高速缓存命中的可能性比如果步骤302和304不执行高得多。因此,高速缓存管理命令的提供,以及高速缓存管理命令由在APU 108上执行的软件程序的产生,使得DMA高速缓存102更有效的使用。程序可以提前知道系统存储器104中哪个数据将被需要,并且发出高速缓存管理命令到DMA控制器150以预先装入该数据到DMA高速缓存102中,其中软件程序将具有到它的快速访问。结果,等待数据取回的等待时间的大部分被消除。没有这些高速缓存管理命令的提供,由APU 108请求的数据可能很少在DMA高速缓存102中找到。
虽然图3仅说明高速缓存管理命令的一个使用(DMA装入的预取),本领域技术人员可以为其他DMA操作(例如DMA存储)的高速缓存管理开发类似的流程。另外,高速缓存管理命令也可以用于其他系统操作(例如软件管理的高速缓存一致性和I/O传输)。
可能存在将数据写到局部存储器112和写回系统存储器104的不同方法,而不背离本发明的真正本质。例如,数据可以经由DMA高速缓存102写回到系统存储器104。作为选择,数据可能直接写回到系统存储器104而不经过DMA高速缓存102。在后者情况下,写回到系统存储器的数据116的高速缓存条目可能被使得无效。类似地,当从系统存储器请求的数据116没有在DMA高速缓存102中找到时,它可能写到DMA高速缓存102和局部存储器112中,或者仅写到局部存储器112,或者仅写到DMA高速缓存102。在后者情况下,需要两个步骤,代替步骤312,以将数据装入到局部存储器112中。在第一步骤中,数据带入到DMA高速缓存102中。第二步骤与步骤310相同。在该步骤中,请求的数据从DMA高速缓存102装入到局部存储器112中。关于写数据到局部存储器112和写回到系统存储器104的过程的这些和其他细节不进一步在这里公开。
图4是说明本发明一种实施方案中DMA命令的展开的流程图。在步骤402中,命令由连接到DMA控制器150的APU 108或其他处理器发出并存储在DMA命令队列202中。例如,在图1中,APU 108发出命令到DMA控制器150。返回到图4,在步骤404中,命令(基于标志和其他限定符)从DMA命令队列202中调度。在DMA控制器150也直接连接到控制处理器106,并且存在两个处理器DMA队列的备选实施方案中,命令和标志仅为相关队列而考虑。另一个步骤也是必需的,以在从每个队列中调度的命令之间选择。在其他实施方案中,DMA控制器每次处理一个命令,并且命令参数可以引用存储和取回的数据的其他参数。
在步骤406中,命令使用展开和翻译逻辑204展开成高速缓存块大小子命令。步骤408~414呈现步骤406的子步骤。在步骤408中,每个块的有效地址(EA)被翻译成适当大小命令的实际地址。在步骤410中,总线请求为数据块而发出。在步骤412中,EA被更新(增加高速缓存块大小或跨度值)。EA的更新和下一个总线请求的发出可以并行地执行。在步骤414中,总线请求的MP一致性总线结果获得。在步骤416中,数据为总线请求而传输。MP一致性总线结果,数据传输,和下一个总线请求的发出都可以并行地执行。在步骤418中,步骤406~416重复,直到命令的全部传输大小已经满足。
在其他实施方案中,命令可以引用单个数据块,对于其展开将不需要。在其他实施方案中,命令可能使用实际地址而不是有效地址作为参数,或者指向受影响数据的地址的任何其他参数。在其他实施方案中,总线将不是MP一致性总线,而是根据请求在各种系统存储设备之间传输数据的任何适当的一个或多个总线。
应当理解,本发明可以采取许多形式和实施方案。因此,一些变化可以在前述中进行而不背离本发明的本质或范围。在这里简述的能力允许多种编程模型的可能性。该公开内容不应当被读作推荐任何特定编程模型,而是代替地指向这些编程模型可以构建于其上的潜在机制。
已经通过参考某些其优选实施方案来如此描述本发明,应当注意,公开的实施方案是说明性的而不是实际上限制性的,并且大范围的变化,修改,改变,和代替可以在前述公开内容中考虑,并且在一些实例中,本发明的一些特征可以被使用,而不相应使用其他特征。许多这种变化和修改基于优选实施方案前述描述的回顾,可以由本领域技术人员认为是期望的。因此,附加权利要求广泛地并且以与本发明范围一致的方式构造是适当的。
权利要求
1.一种提供高速缓存管理的软件程序控制的系统,包括处理器,其配置以在软件程序在处理器上执行时产生高速缓存管理的DMA命令;以及连接到处理器的DMA控制器,其配置以执行高速缓存管理的DMA命令。
2.根据权利要求1的系统,还包括连接到DMA控制器的高速缓存,该系统被配置用于高速缓存管理DMA命令在DMA控制器上的执行,以管理连接到DMA控制器的高速缓存的操作。
3.根据权利要求1的系统,其中DMA命令中至少一个是获取命令并且DMA命令中至少一个是放置命令。
4.根据权利要求1的系统,其中DMA命令中至少一个是刷新命令。
5.根据权利要求1的系统,其中DMA命令中至少一个是清零命令。
6.根据权利要求1的系统,其中DMA命令的参数包括类线,标志,传输大小,和有效地址低。
7.根据权利要求1的系统,其中高速缓存是紧密耦合到DMA控制器的DMA高速缓存。
8.根据权利要求1的系统,其中高速缓存是系统存储器的高速缓存。
9.一种在包括DMA控制器和处理器的系统中高速缓存管理的方法,该方法包括步骤在处理器上运行软件以产生高速缓存管理的DMA命令;发出DMA命令到DMA控制器;以及执行DMA命令。
10.根据权利要求9的方法,其中高速缓存连接到DMA控制器,并且在DMA控制器上执行DMA命令管理高速缓存的操作。
11.根据权利要求9的方法,其中DMA命令中至少一个是放置命令并且其中DMA命令中至少一个是获取命令。
12.根据权利要求9的方法,其中DMA命令中至少一个是刷新命令。
13.根据权利要求9的方法,其中高速缓存是紧密耦合到DMA控制器的DMA高速缓存。
14.根据权利要求9的方法,其中高速缓存是系统存储器的高速缓存。
15.一种在包括DMA控制器和处理器的系统中高速缓存管理的计算机程序产品,该计算机程序产品具有计算机程序在其上实施的介质,该计算机程序包括用于在处理器上运行软件以产生高速缓存管理的DMA命令的计算机代码;用于发出DMA命令到DMA控制器的计算机代码;以及用于执行DMA命令的计算机代码。
16.根据权利要求15的计算机程序产品,其中DMA命令中至少一个是获取命令。
17.根据权利要求15的计算机程序产品,其中DMA命令中至少一个是放置命令。
18.根据权利要求15的计算机程序产品,其中DMA命令中至少一个是刷新命令。
19.根据权利要求15的计算机程序产品,其中DMA命令中至少一个是清零命令。
20.根据权利要求15的计算机程序产品,其中高速缓存是紧密耦合到DMA控制器的DMA高速缓存。
21.根据权利要求15的计算机程序产品,其中高速缓存是系统存储器的高速缓存。
全文摘要
本发明提供一种用于在支持DMA机制和高速缓存的系统中提供高速缓存管理命令的方法和系统。DMA机制由处理器建立。运行在处理器上的软件产生高速缓存管理命令。DMA机制执行命令,从而启动高速缓存的软件程序管理。命令包括将数据写到高速缓存,从高速缓存中装入数据,以及将高速缓存中的数据标记为不再需要的命令。高速缓存可以是系统高速缓存或DMA高速缓存。
文档编号G06F13/28GK1673980SQ200510054109
公开日2005年9月28日 申请日期2005年3月4日 优先权日2004年3月25日
发明者查尔斯·雷伊·约翰斯, 詹姆斯·艾伦·卡勒, 刘培军, 张光赏 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1