经由流动id方法的dmac发布机制的制作方法

文档序号:6654877阅读:182来源:国知局
专利名称:经由流动id方法的dmac发布机制的制作方法
技术领域
本发明总体上涉及直接存储器存取(DMA)请求命令的发布,并且更具体地,涉及命令队列的操作。
背景技术
在过去几年中,DMA已经成为计算机体系结构的一个重要方面。除了DMA,还开发了多处理器系统,使用DMA来提供更快的处理能力。特别地对于DMA,典型地有两种类型的请求或命令可以从处理器发布以供DMA控制器(DMAC)执行加载和存储。但是,取决于系统,单个处理器可以具有从输入/输出(I/O)设备、另一处理器的本地存储器、存储器设备等加载或存储的能力。
但是最近,多处理器和DMAC已经合并到单个芯片上。缩减到单个芯片允许获得减小的尺寸和增加的速度。DMAC、处理器、总线接口单元(BIU)和总线都可以合并到一个芯片上。这种系统的数据流开始于处理器核,它分派DMA命令,并且该命令存储在DMA命令队列中。每个DMA命令可以向BIU展开或拆散成为较小的总线请求。所得到的展开的请求存储在BIU未完成(outstanding)总线请求队列中。然后BIU把请求转发给总线控制器。一般来说,请求按照其从DMA接收的顺序从BIU发出。当一个总线请求完成时,BIU未完成总线请求队列条目可用来接收一个新的DMA请求。
然而,源设备处的BIU未完成总线请求队列和目的地设备处窥探队列的物理尺寸可能引起瓶颈。典型地,该瓶颈是执行命令时队列顺序和/或延时的函数。例如,用于从另一处理器的本地存储器加载的命令2可被延时以等待用于存储到动态随机存取存储器(DRAM)的命令1。因此,由此引起的瓶颈可能导致操作速度的显著损失。
导致瓶颈的一个因素可以是DMA命令的执行顺序。事实上,某些命令的执行快于其它命令。例如,在同一芯片上在处理器之间移动数据的DMA命令执行的完成可以快于对外部存储器或I/O设备的DMA命令执行,后一种DMA命令执行典型地花费长得多的时间。结果,用于向存储器或I/O设备移动数据的DMA命令停留在BIU未完成请求队列中的时间将长得多。最后,BIU未完成请求队列可能被较慢的总线请求完全占用,留下很少或没有留下空间用于来自DMA的另外的总线请求。这导致处理器的性能降低,因为处理器必须停下来等待BIU未完成总线请求队列中的可用空间。
导致瓶颈的另一因素可以是重试。在多个源设备向/从同一目的地设备移动数据的情况下,当窥探队列满时,目的地设备必须拒绝总线请求,这导致源设备在稍后的时刻重试相同的总线请求。
导致瓶颈的再一因素可以是目的地设备中命令执行的顺序。在常规的DRAM存取中,DRAM设备可以在连续的存储体上并行操作。而且,典型地使用双向总线与DRAM设备进行接口。如果数据移动方向改变频繁,总线带宽由于回转总线需要的额外总线周期而被减小。而且,还期望对同一存储器页进行一系列读或写,以获得较大的并行DRAM存取。
因此,需要一种方法和/或装置,用于改进解决上述问题的DMA发布机制的效率。

发明内容
本发明的各方面可以解决与服务DMA请求相关的某些瓶颈问题。DMA控制器从处理元件接收DMA命令,并向总线接口单元展开每个请求。DMA控制器内的发布逻辑决定允许哪些命令出去和/或发布命令的定时。DMA控制器内的总线接口单元有一个队列,该队列在DMA请求发布给总线之前保持它们。每个DMA请求的目标可以是外部存储器、I/O设备或片上存储器。片上存储器的例子包括本地贮存存储器(处理元件的本地存储器)、存储器映像IO(MMIO)或高速缓存到高速缓存的传送。
在一种情况下,DMA队列中多个DMA请求的一个或更多属性可能合作以降低存储器系统的整体性能。例如,一个或更多属性可能涉及DMA请求是用于DMA读命令还是用于DMA写命令。接连的许多DMA读操作或许多DMA写操作可能降低性能,因为每个DMA命令都分成多个存储器存取,然后被正常执行。交替的读和写操作可解决这个问题。
依照本发明的一个或更多实施例,可以使用“时隙(slot)”概念来响应DMA队列中的DMA请求而控制发布存储器存取的定时。例如,假设一个给定的存储器存取被允许一个给定的时隙(或间隔)“T”(T=0,1,2,3,…),则可以控制读和写操作的命令发布以使得读存储器存取操作在时隙2T期间发布,而写存储器存取操作在时隙2T+1期间发布。举例来说,当连续的读或写操作在请求处理器到处理器存取时或请求处理器到I/O存取时发布时,一些系统会经历性能的降低。在这样的系统中,用于处理器到存储器存取的连续读或写操作可能不会导致性能降低。然而,通过仅在处理器到处理器或处理器到I/O存取情形下应用时隙概念,可避免性能的损失。
流式(streaming)ID概念的使用可证明对于保持高速存储器存取也是有益的。可以使用流式ID方法来区分被请求的存取的目标,诸如区分对存储器的存取请求或对I/O设备的存取请求。为了说明流式ID概念所针对的性能问题,假设对I/O设备的存取比对存储器的存取需要长得多的时间。进一步假设存储在DMA队列中的存储器存取请求的数量和I/O存取请求的数量基本上相等。在这种情况下,对存储器的存取时间可以包括冗余时间(由于服务I/O存取请求),它在正常情况下不会存在,并因此对存储器的存取时间可能比预期的慢。为了解决这个问题,可分配各自的配额,一个配额用于存储器存取请求,一个配额用于I/O存取请求。因此,即使I/O存取请求被挂起(由于达到了I/O存取配额),仍可以保持服务存储器存取请求的速度,而不存在性能的任何降低,因为可能还没有达到存储器存取配额。
时隙方法和流式ID方法可以单独使用或组合使用。因此,发布策略可以考虑下列因素中至少之一时隙交替、流式ID组和DMA命令的年龄。本领域技术人员会发现,下文的详细描述主要针对时隙和流式ID方法的组合。
例如,在本发明的一个实施方式中,预期一种方法和一种计算机程序,用于执行DMAC中的命令。首先选择一个时隙。一旦选择了该时隙,然后就确定被选时隙中哪些组是有效的。如果没有有效的组,则选择另一时隙。然而,如果至少有一个有效组,则使用循环仲裁方案来选择组。在被选组内,选择并展开最老的未决DMA命令。然后被展开的总线请求被分派给BIU。在展开之后,DMA命令参数被更新并回写到DMA命令队列中。


为了更完整地理解本发明及其优点,现在参考结合附图的下列详细描述,其中图1为描述使用DMAC的多处理器计算机系统的框图;图2A为描述改进的DMAC命令队列的框图;图2B为描述用于改进的DMAC命令登记的控制寄存器的框图;以及图3为描述经由DMAC发布机制发布命令的流程图。
具体实施例方式
在下列讨论中,叙述了许多具体细节以提供对本发明的透彻理解。然而,本领域技术人员将理解,可以实现本发明而不使用这样的具体细节。在其它实例中,公知元素以示意图或框图形式进行说明,以便不因为不必要的细节而使本发明模糊不清。此外,对于大多数部分,省略了关于网络通信、电磁信令技术等的细节,因为认为这样的细节对于获得对本发明的完整理解不是必需的,并且认为这样的细节在相关领域普通技术人员的理解范围内。
还应注意,除非另外指明,在这里描述的所有功能都可以按硬件或软件或其组合来执行。然而,在优选实施例中,除非另外指明,这些功能由诸如计算机或电子数据处理器的处理器依照诸如计算机程序代码的代码、软件和/或被编码以执行这些功能的集成电路执行。
参照附图中的图1,附图标记100概括地指使用DMAC的多处理器计算机系统。系统100包括第一处理器101、第二处理器103、第三处理器105、总线130、存储器控制器122、存储器设备124、I/O控制器126和I/O设备128。此外,还有可以与系统100一起使用的各种类型的存储设备或存储器设备。而且,可以具有单个处理器或多个处理器,如图1所示。
处理器101、103和105中的每一个以相似的方式配置以进行数据通信。第一处理器101、第二处理器103和第三处理器105各自分别还包括第一处理器核104、第二处理器核106和第三处理器核108。第一处理器核104通过第一加载通信信道152和第一存储通信信道150耦合到第一DMAC 110。第二处理器核106通过第二加载通信信道156和第二存储通信信道154耦合到第二DMAC 112。第三处理器核108通过第三加载通信信道160和第三存储通信信道158耦合到第三DMAC 114。第一DMAC 110通过第四存储通信信道162和第四加载通信信道164耦合到第一BIU 116。第二DMAC 112通过第五存储通信信道166和第五加载通信信道168耦合到第二BIU 118。第三DMAC 114通过第六存储通信信道170和第六加载通信信道172耦合到第三BIU 120。
各处理器中的每一个也按类似的方式工作。命令,不论加载还是存储命令,发源于处理器核。可以由给定的处理器发布各种命令。然而,为了说明的目的,关注三种不同的命令类型处理器到处理器、处理器到存储器设备和处理器到I/O设备。一旦命令由处理器核发布,该命令就传递到DMAC。然后DMAC向BIU展开该命令,其中未完成总线请求队列存储被展开的总线请求。在晚些时刻,总线请求被送出到总线。当总线控制器准许该请求时,源和目的地设备将执行数据传送,以完成总线请求。
使用DMAC的多处理器计算机系统100通过使用总线130在各种部件之间通信数据和总线请求而进行操作。第一处理器101通过第七存储通信信道174和第七加载通信信道176耦合到总线130。第二处理器103通过第八存储通信信道178和第八加载通信信道180耦合到总线130。第三处理器105通过第九存储通信信道182和第九加载通信信道184耦合到总线130。存储器控制器122使用双向存储器总线实现来向和从存储器设备124通信数据。因此,存储器控制器122经由双向存储器总线实现,通过第十存储通信信道186和第十加载通信信道188耦合到总线130。而且,I/O控制器126通过第十一存储通信信道190和第十一加载通信信道192耦合到总线130。
除了到总线130的连接,在各种其它部件之间也可以存在连接。更具体地,诸如存储器控制器122和I/O控制器126的控制器需要到其它相应的设备的连接。存储器控制器122通过第一带宽受控的通信信道194耦合到存储器设备124。I/O控制器126通过第二带宽受控的通信信道196和第三带宽受控的通信信道198耦合到I/O设备128。
参照附图中的图2A和2B,附图标记200和250概括地分别指DMAC中的命令队列和控制寄存器。DMA命令队列200包含固定数量的条目;每个条目细分为三个字段时隙字段210、流式ID字段220和命令字段230。DMA控制寄存器250包括一个时隙使能寄存器252和一个配额寄存器266。
在DMAC内,诸如图1中的DMAC 110,具有有限数量的队列条目用于把命令排列成物理队列。进入的DMA命令可以放置在任何可用命令队列条目中。用于每个DMA命令的时隙指示被输入时隙字段210。因为DMA命令包括命令操作码和操作数,诸如流式ID,所以流式ID被放置在流式ID字段220中,命令操作码和其它操作数被放置在命令字段230中。每个流式ID配置成具有在单比特时隙使能寄存器252中被使能或禁止的时隙功能,通过用于组0的使能时隙254、用于组1的使能时隙256和用于组2的使能时隙258示出。而且,具有通过用于组0的配额260、用于组1的配额262和用于组2的配额264来描述的特定的配额。配额的总和受BIU的未完成总线请求队列的大小限制。
时隙的使能或禁止用来匹配总线带宽特性(即,如果总线是双向的,例如存储器总线,则禁止时隙功能)。如果时隙功能对于流式ID组被使能,则在时隙字段210中,加载命令被赋值为0;在时隙字段210中,存储命令被赋值为1。如果时隙功能被禁止,则在时隙字段210中,加载和存储命令都被赋值为0。
但是,典型地,有三种总线请求操作可能发生处理器到处理器、处理器到外部或系统存储器、以及处理器到I/O设备。这三种操作中的每一种都可以被分配到流式ID组。
一般来说,处理器到处理器命令被分配到流式ID组0,处理器到存储器命令被分配到流式ID组1,处理器到IO命令被分配到流式ID组2。在这种情况下,时隙功能对于流式ID组0和2被使能,对于组1被禁止,以便匹配与DMA命令相关的总线带宽特性。
DMA命令典型地向BIU展开成一个或更多总线请求。该总线请求排列到BIU的未完成DMA总线请求队列中,该队列具有有限的大小。通过为每个流式ID组配置配额,该队列分成三个虚拟队列。取决于软件应用程序,这三个虚拟队列的大小可以经由流式ID配额而动态地配置。
参照附图中的图3,附图标记300概括地指描述从修改的DMAC发布机制发布命令的流程图。
一旦DMA命令被输入命令队列,如图3中的流程图300所示,则DMAC必须提供用于发布命令的处理,例如处理300。在步骤302中,发生时隙0和时隙1之间的交替。DMAC在各时隙之间交替以提供用于单向总线类型的可用带宽的更高效使用。
如果时隙0被选择下一个执行,则DMAC应该进行一系列测量来确定发布命令队列。在步骤304中,DMAC确定哪个组具有有效的未决DMA命令。与每个组相关的是最大发布计数或配额。配额限制可以发布的总线请求的数量,以防止系统溢出。为了保持系统的正确操作,在步骤306中,DMAC确定时隙内的各组中的每一个组是否超过它们各自的配额。
一旦确定了有效性和配额,DMAC选择下一个命令。在步骤308中,DMAC在命令组之间使用循环选择系统。在选择的时候,在步骤310中确定是否存在任何有效组在其各自的配额限制下带有未决命令。如果没有有效组在其各自的配额限制下带有未决命令,则交替到另一个时隙,即时隙1。然而,如果存在有效组在其各自的配额限制下带有未决命令,则所选组中最老的命令在步骤312中展开。然后在步骤314中循环指针调整到下一个流式ID命令组,且队列大小减小,然后时隙在步骤302中交替。
如果时隙1被选择下一个执行,则DMAC应该进行一系列测量来确定发布命令队列。在步骤316中,DMAC确定哪个组具有有效的未决DMA命令。与每个组相关的是最大发布计数或配额。配额限制可以发布的总线请求的数量,以防止系统溢出。为了保持系统的正确操作,在步骤318中,DMAC确定时隙内的每个组是否超过它们各自的配额。
一旦确定了有效性和配额,DMAC选择下一个命令。在步骤320中,DMAC在命令组之间使用循环选择系统。在选择时,在步骤322中确定是否存在任何有效组在其各自的配额限制下带有未决命令。如果不存在有效组在其各自的配额限制下带有未决命令,则交替到另一个时隙,即时隙0。然而,如果存在有效组在其各自的配额限制下带有未决命令,则所选组中最老的命令在步骤324中展开。然后在步骤326中,循环指针调整到下一个流式ID命令组,且队列大小减小,然后时隙在步骤302中交替。
应注意到,所有的处理器到存储器命令,不论它们是加载还是存储命令,都通过时隙0展开。以这种方式发布多个命令的原因是为了提高效率。改变双向总线的方向是费时的。而且,对于外部存储器,存在可以各自单独处理请求的多个存储体,因此外部存储器能够接收多个命令。此外,处理请求需要的时间可能非常长。因此,有益的是,处理与突发(burst)加载或存储一样多的对外部存储器的请求以有利于使对双向总线的方向改变最少并使得并行加载或并行存储最多。
从前述描述可以进一步理解,在本发明的优选实施例中可以做出各种修改和变化而不背离其真实精神。本说明书的目的仅是用于说明,不应该解释为限制意义。本发明的范围应该仅受下列权利要求的语言的限制。
已通过参考本发明的一些优选实施例描述了本发明,应该注意,所公开的实施例本质上是说明性的,而非限制的,并且预期在前述公开中有宽范围的变更、修改、变化和代替,并且在一些实例中,可以使用本发明的一些特征而无需相应使用其它特征。可以认为本领域的技术人员希望基于对这些优选实施例的前述描述的回顾想到许多这样的变更和修改。因此,广义地并且以与本发明范围一致的方式解释所附权利要求书是合适的。
权利要求
1.一种用于使用流式ID发布起源于处理元件的直接存储器存取DMA请求命令的系统,包括总线装置;DMA控制器(DMAC)装置,其具有发布逻辑单元;总线接口单元(BIU)装置,其具有未完成队列单元,所述BIU装置在所述总线装置和所述DMAC装置之间互连;总线目标装置,其互连到总线装置,并且包括外部存储器、输入输出(IO)装置和片上存储器中至少之一,其中所述总线装置在所述BIU装置和所述总线目标装置之间互连;该发布逻辑单元作为发布策略的函数确定哪些命令被允许展开为总线请求,该发布策略以时隙交替、流式ID组和所述命令的年龄中至少之一作为其因素;以及所述未完成队列单元在发布给总线之前保持每一个总线请求。
2.权利要求1中的装置,其中所述DMAC装置进一步包括具有多个条目位置的命令代码字段;时隙字段,其至少配置成与命令指示相关且至少配置成具有多个时隙条目,该多个时隙条目中的每一个对应于该多个条目位置中的至少一个条目位置;以及识别字段,其至少配置成包含对应于该多个条目位置中的每个条目位置的流式ID号。
3.权利要求2中的装置,其中该命令指示进一步包括从由加载命令和存储命令组成的组中选择的指示。
4.权利要求1中的装置,其中所述发布逻辑单元至少禁止用于带有双向总线的外部设备的时隙交替。
5.一种用于发布DMAC中的命令的方法,包括选择多个时隙中的一个时隙,以提供被选时隙;确定被选时隙的组有效性;如果不存在有效的组,则选择该多个时隙中的另一个时隙;如果至少一组有效,则选择最老的有效命令;以及更新拥有该最老的有效命令的那一组的组特性。
6.权利要求5中的方法,其中选择时隙的步骤还包括选择加载时隙或存储时隙。
7.权利要求5中的方法,其中确定组有效性的步骤还包括确定多个ID组中的有效ID组;以及确定是否至少一个有效ID组已达到预编程的配额。
8.权利要求5中的方法,其中更新队列特性的步骤还包括把用于拥有最老的有效命令的组的指针移到下一个未决总线请求。
9.一种计算机程序产品,用于发布DMAC中的命令,该计算机程序产品具有包含计算机程序的介质,该计算机程序包括用于选择多个时隙中的一个时隙以提供被选时隙的计算机代码;用于确定被选时隙的组有效性的计算机代码;如果不存在有效的组,则用于选择该多个时隙中的另一个时隙的计算机代码;如果至少一组有效,则用于选择最老的有效命令的计算机代码;以及用于更新拥有最老的有效命令的那一组的组特性的计算机代码。
10.权利要求9中的计算机程序产品,其中用于选择时隙的计算机代码还包括用于选择加载时隙或存储时隙的计算机代码。
11.权利要求9中的计算机程序产品,其中用于确定组有效性的计算机代码还包括用于确定多个ID组中的有效ID组的计算机代码;以及用于确定是否至少一个有效ID组已达到了预编程的配额的计算机代码。
12.权利要求9中的计算机程序产品,其中用于更新队列特性的计算机代码还包括用于把拥有最老的有效命令的组的指针移到下一个未决总线请求的计算机代码。
13.一种处理器,用于发布DMAC中的命令,该处理器包括一种计算机程序,该计算机程序包括用于选择多个时隙中的一个时隙以提供被选时隙的计算机代码;用于确定被选时隙的组有效性的计算机代码;如果不存在有效的组,则用于选择该多个时隙中的另一个时隙的计算机代码;如果至少一组有效,则用于选择最老的有效命令的计算机代码;以及用于更新拥有最老的有效命令的那一组的组特性的计算机代码。
14.权利要求13中的计算机代码,其中用于选择时隙的计算机代码还包括用于选择加载时隙或存储时隙的计算机代码。
15.权利要求13中的计算机代码,其中用于确定组有效性的计算机代码还包括用于确定多个ID组中的有效ID组的计算机代码;以及用于确定是否至少一个有效ID组已达到了预编程的配额的计算机代码。
16.权利要求13中的计算机代码,其中用于更新队列特性的计算机代码还包括用于把拥有最老的有效命令的组的指针移到下一个未决总线请求的计算机代码。
全文摘要
本发明提供一种装置、一种方法和一种计算机程序,用于执行直接存储器存取(DMA)命令。通过软件,基于命令类型,诸如处理器到处理器、处理器到输入/输出(I/O)设备以及处理器到外部或系统存储器,物理队列被分成若干个虚拟队列。然后基于DMA命令的类型加载或存储,将命令分配给一个时隙。一旦分配,就可以通过在时隙之间交替,并且通过使用时隙内的循环系统来执行命令,以便提供更有效的执行DMA命令的方式。
文档编号G06F13/36GK1910562SQ200580002353
公开日2007年2月7日 申请日期2005年7月28日 优先权日2004年7月29日
发明者马修·爱德华·金, 彼德·刘培军, 戴维·穆伊, 山崎刚 申请人:索尼计算机娱乐公司, 国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1