用于主/从直接存储器访问硬件和软件控制的方法和设备的制作方法

文档序号:6494979阅读:130来源:国知局
专利名称:用于主/从直接存储器访问硬件和软件控制的方法和设备的制作方法
技术领域
本发明总体上涉及直接存储器访问(direct memory accessDMA)并且尤其涉及用于提供优化数据吞吐量的DMA硬件/软件控制技术和结构。
近几十年与信息通信相关联的技术迅猛发展。这些通信技术之一涉及在存储装置之间转送数据。例如,各种计算机处理系统的存储器系统典型情况下包括主存储装置和一个或多个更大、不那么昂贵的辅助存储装置。这允许把大量信息存储在辅助存储器以便在必要时加载到主存储装置中。在互连处理系统中的存储装置之间存在类似的数据转送,所述转送有时被称为“主-从”数据转送,并且经由例如数据总线之类的互连设备执行。例如,移动电话(主)的处理器可能需要往返于例如天线子系统(从)之类的子系统处理器转送数据。
用于执行这种数据转送的一个技术以直接存储器访问(DMA)著称。DMA涉及由某些计算机处理体系结构所提供的能力,其能够在不涉及主处理器(一个或多个)的情况下,允许数据从一个存储装置直接发送到另一存储装置,由此加快了整体处理速度。通常存储器的指定部分被指定为用于DMA转送的区域。当在主和从装置之间需要转送许多数据块时,主-从存储器直接存取数据转送存在一个问题。当此情况出现时,常规的DMA数据转送技术在能否有效地执行这种转送方面受到挑战,并且一般会遇到各种等待时间问题。在

图1的时间线中示出了这种等待时间问题的一个例子。其中,在周期DMA 1期间把第一DMA数据块从主装置转送到从装置并且在周期DMA 2期间在所述主和从装置之间转送所述数据块的第二部分。注意,在图1中,在时段DMA 1和DMA 2之间存在用t1来表示的延迟周期。在这个时候,在主和从装置之间进行各种信号交换活动。例如,在DMA 1结束时,主装置将向DMA控制器发信号来表明它已经转送了DMA数据的第一部分。于是DMA控制器将复位在DMA数据转送过程中所使用的寄存器(一个或多个),例如地址寄存器。在完成信号交换之后,可以启动第二DMA转送(DMA 2)。由于延迟周期t1,此常规的DMA技术尤其遭受在DMA传送时间中的低效率。
此问题的一个部分解决方案涉及使用两个存储器部分来用于DMA事务,在美国专利第6,341,318号中描述了其例子,在此将其内容通过引用以供参考。其中参考图2(a)和2(b),在迭代0中,存储体A向存储体A加载(LD0)来自数据块的第一数据部分。在迭代1中,把下一数据部分加载(LD1)到存储体B中,同时先前加载到存储体A中的部分被处理(P0)继而被存储(ST0)。在迭代2中,再次向存储体A加载(LD2)来自数据块的第三数据部分,同时先前加载到存储体B中的部分被处理(P1)继而被存储(ST1)。加载和处理/存储操作继续在每个存储体之间切换直到所有数据块被加载、处理并存储。由于可以对超大的DMA数据块的部分并行执行处理,所以此技术可以减少与此类型的DMA数据转送相关联的等待时间。然而,在‘318专利中所描述的技术没有解决前述的在主和从装置之间处理大量DMA转送的问题。在这种情况下,即便使用两个DMA存储单元也不足以消除与设置每个转送相关联的等待时间。此外,‘318专利在其寄存器体系结构中提供了相对较少的控制或状态功能。例如,没有描述用于在DMA事务期间服务高层软件协议的机制。因而,在‘318专利中所描述的DMA事务体系结构没有提供这样的DMA体系结构,所述DMA体系结构在具有不同高层服务需要的不同硬件/软件应用之间不作修改的情况下能够足够灵活地被重新使用。
据此,可能会希望为DMA数据转送提供避免常规技术问题的更灵活的技术和设备。
依照本发明的系统和方法通过提供健壮的DMA体系结构来解决此等需要,所述DMA体系结构包括在DMA转送期间能够灵活地支持高层硬件/软件服务需要的寄存器。这种寄存器尤其包括邮箱寄存器和便笺式寄存器,所述寄存器向依照本发明的DMA体系结构和方法提供用于提供多个中断信道的能力和溢出数据转送的能力,所述能力允许在只改变DMA体系结构编程而不改变其体系结构的情况下重新使用这些DMA体系结构。
依照本发明的一个示例性实施例,用于在主装置和从装置之间转送信息的直接存储器访问(DMA)系统包括第一多个DMA信道,用于把信息从所述主装置转送到所述从装置;第二多个DMA信道,用于把信息从所述从装置转送到所述主装置;第一组控制寄存器,用于协调使用所述第一多个DMA信道来把信息从所述主装置转送到所述从装置;和第二组控制寄存器,用于协调使用所述第二多个DMA信道来把信息从所述从装置转送到所述主装置,其中所述第一组控制寄存器和第二组控制寄存器都包括至少一个邮箱寄存器,用于在DMA事务期间响应于由其它主装置和从装置写到所述至少一个邮箱寄存器的数据,来有选择地向主装置和从装置中的相应一个提供中断信号。
依照本发明的另一示例性实施例,用于在主装置和从装置之间转送直接存储器访问(DMA)信息的方法包括步骤存储在DMA事务期间使用第一DMA信道所接收的第一数据部分;存储在所述DMA事务期间使用第二DMA信道所接收的第二数据部分;并且通过在所述DMA事务期间由其它主装置和从装置把数据写到至少一个邮箱寄存器中,来有选择地向所述主装置和从装置之一提供中断信号。
附示了本发明的示例性实施例,其中图1描述了用于图示依照一个常规方法的DMA数据转送的时间线,该常规方法使用为DMA数据转送所指定的单个存储区域的;图2(a)和2(b)图示了使用两个存储区域的常规DMA数据转送;图3描述依照本发明示例性实施例的主-从DMA体系结构的框图;图4示出了包括示例性寄存器组的图3的DMA体系结构的从部分的放大视图;图5是提供各个寄存器的概观的表,所述各个寄存器可以包括在依照本发明示例性实施例的DMA体系结构中;图6(a)-6(1)图示了依照本发明示例性实施例的示例性单个寄存器结构;图7是依照本发明示例性实施例按照主装置观点图示了用于把数据从主装置转送到从装置的示例性方法的流程图;图8是依照本发明示例性实施例按照从装置观点图示了用于把数据从主装置转送到从装置的示例性方法的流程图;图9是依照本发明示例性实施例按照从装置观点图示了用于把数据从从装置转送到主装置的示例性方法的流程图;和图10是依照本发明示例性实施例按照主装置观点图示了用于把数据从从装置转送到主装置的示例性方法的流程图。
本发明的以下详细描述参照附图。在不同附图中相同的附图标记标识相同的或相似的元件。以下详细描述也并不限制本发明。作为替代,本发明的范围由附加权利要求来定义。
为了为讨论提供一些上下文,在图3的框图中描述了其中可以实现依照本发明示例性实施例的技术和设备的示例性主从系统。其中,主装置30包括处理器32、存储装置34和主DMA控制器36(主DMA控制器36可以在逻辑上被视为硬件连接层38的一部分)。类似地,从装置40包括其自己的处理器42、存储装置44和从DMA控制器46(从DMA控制器46也可以在逻辑上被视为硬件连接层38的一部分)。硬件连接层38可以被实现为例如任何适当的数据总线,所述数据总线可以传递所描述的功能,例如主到从中断信号、主到从DMA数据转送信号、从到主中断信号以及从到主DMA数据转送信号。装置34和44不局限于实现为存储装置本身并且作为选择,也可以是使用经由总线从另一装置所转送的数据的任何其它装置。
图4更详细地图示了从DMA控制器46并且特别示出了各个寄存器的一般分组,所述各个寄存器可以依照本发明示例性实施例被用来协调DMA数据转送。第一(可选择的)寄存器组48包括硬件连接层38特定寄存器,其由主装置30用来控制从DMA和/或从中断产生活动。例如,如果SDIO总线被用作硬件连接层38,那么第一寄存器组48可以包括用于表明正在使用一位模式还是四位模式的寄存器。其它例子包括设置硬件特定寄存器,用于表明DMA数据转送以全双工模式还是半双工模式出现和/或表明操作频率。典型情况下,在初始化阶段期间只编程硬件特定寄存器48(如果有的话)。第二寄存器组50包括主到从邮箱和便笺式寄存器,其由主装置30用来向从装置40转送软件特定信息。如前所说,邮箱和便笺式寄存器尤其向高层软件和硬件协议提供了用于在DMA活动期间操作的灵活性。例如,当主装置40写入邮箱寄存器时,可以把中断信号发送到从处理器42。如下所述对于控制寄存器,响应于写入邮箱寄存器而产生中断信号是可编程的。于是从装置30将读取在邮箱寄存器中所存储的信息,这会导致清除中断。依照本发明示例性实施例写到邮箱寄存器的信息可以取决于由DMA体系结构所互连的主和从装置来在很大程度上改变。例如,如果主装置是移动电话的中央处理器而从装置是天线子系统,那么所述主装置可以把天线子系统的指令写到邮箱寄存器(一个或多个)中,例如请求所述天线子系统启动低功耗操作。因而,邮箱寄存器可以用来提供内置的中断信道,可以取决于互连设备来依照各种方式使用所述中断信道。除写入便笺式寄存器不会导致产生中断信号以外,便笺式寄存器与邮箱寄存器类似。因而,例如便笺式寄存器可以用来携带与在主和从装置之间经由邮箱寄存器所转送的命令相关联的溢出数据。作为选择,从装置40可以在便笺式寄存器中找到主装置状态信息。
寄存器组52描述了从到主方向的邮箱和便笺式寄存器。此寄存器组执行与上面相对于组50所描述的类似功能。当从装置40写入这些邮箱寄存器之一时,可以根据控制寄存器编程来把中断信号发送到主装置30。当主装置30读取相应的邮箱时,将清除中断。寄存器组54描述了DMA状态/控制寄存器,所述DMA状态/控制寄存器尤其控制在一个DMA周期内所转送的数据量。在主到从方向上,控制寄存器还表明将写入数据的地址,而在从到主方向上,所述控制寄存器还表明将读取数据的地址。如下面将要关于单个寄存器及其功能而更详细地描述,状态寄存器提供了对DMA活动以及哪些中断挂起的指示。
为了更好地理解依照本发明示例性实施例的体系结构,现在相对于图5-6(1)提供了上述各个寄存器的更详细的例子。那些本领域技术人员应当理解,与此例子相关联的细节在本质上仅仅是说明性的并且可以进行改变。尤其是地址和位长仅仅是示例性的。图5提供了在硬件连接层38的从装置端上列出可编程寄存器的表,包括它们的类型。在相应的图6(a)-6(1)中更详细地描述了在图5的表中所列出的每个寄存器。
以图6(a)开始,提供了主到从中断状态/控制寄存器的例子。这里此寄存器类型还指的是“邮箱中断状态/控制寄存器”。此控制/状态寄存器用来控制并提供关于主到从邮箱寄存器的信息。特别地是,从装置40可以设置与每个主到从邮箱寄存器相关联的控制位以便允许或拒绝当由主装置30写入相应的邮箱寄存器时产生的中断。此特征例如在当希望禁止邮箱中断时的初始化期间使用。在初始化之后,从装置40可以启用邮箱寄存器中断。还在此寄存器中提供用于每个主到从邮箱的状态位,所述状态位允许从装置40识别哪个或哪些邮箱使其接收中断。一旦读取,就复位这些状态位。类似地是,图6(b)描述了从到主方向的中断状态/控制寄存器。因而,主装置30可以设置与每个从到主邮箱寄存器相关联的控制位以便允许或拒绝当由从装置30写入相应的邮箱寄存器时产生的中断。还在此寄存器中提供了用于每个从到主邮箱的状态位,所述状态位允许主装置30查看中断是否挂起。
图6(c)描述了示例性的DMA状态/控制寄存器。此寄存器尤其可以包括用于存储版本信息的位、用于对于在每个方向上的每个DMA存储单元表明DMA活动的位以及用于控制两个DMA存储单元中的哪个将用于下一DMA事务的位。对于后者功能,在图6(c)中可以看出,在每个主到从和从到主事务之后可以分别自动地反转在此寄存器中的位的值0和1,以便提供如下面所详述的对双重存储单元的循环使用。图6(d)-6(g)分别提供了主到从邮箱寄存器、主到从便笺式寄存器、从到主邮箱寄存器和从到主便笺式寄存器的例子。尽管可以在依照本发明的DMA体系结构的每个方向上提供多个邮箱和便笺式寄存器,然而由于这些类型寄存器中的每个可以具有相同的结构和功能,所以这里只描述每个类型/方向之一。为存储邮箱代码和/或便笺值所分配的位数目可以比在图6(d)-6(g)所示出的例子中表明的10位更多或更少。
图6(h)图示了示例性的DMA中断状态/控制寄存器。此寄存器提供了可编程启用/禁止的中断信号,其用来发信号表示DMA转送完成。对于每个方向上的每个DMA存储单元提供一个位,在本发明的此示例性实施例中总共提供四个控制位。类似地,四个位向每个方向上的每个DMA存储单元提供了关于是否已经设置中断的状态信息。DMA中断状态/控制寄存器还可以用来提供其它功能,例如提供关于是先以最高有效位(most significant bit MSB)还是先以最低有效位(least significant bit LSB)来发送16位数据值的指示符。图6(i)-6(1)分别图示了示例性的主到从DMA地址寄存器、主到从DMA大小寄存器、从到主DMA地址寄存器和从到主DMA大小寄存器。可以向用于转送DMA数据的每个DMA存储单元提供一个地址和一个大小寄存器以便规定每个存储单元的地址和大小。因此依照此示例性实施例,如图5所示可以使用这些寄存器中的八个。
已经描述了依照本发明示例性实施例的寄存器体系结构,现在将参考图7-10的流程图来讨论用于使用这种体系结构来转送数据的示例性方法,其中图7和8描述了主到从DMA转送方法而图9和10描述了从到主DMA转送方法。在主装置端上,在步骤70,主装置30首先等待从装置40初始化。这例如可以通过主装置30轮询从到主便笺式寄存器之一并且等待从装置40把预定值写入该寄存器来实现。接下来在步骤72,主装置30初始化与主到从邮箱相关的中断(图6a)。从装置40使用这些中断来表明主到从DMA信道已经被初始化并且准备接收数据。然后在步骤74,主装置30等待发送到从装置30的数据。在此步骤,主装置30知道从装置40具有两个可用的主到从DMA信道。当主装置30具有需要被转送到从装置40的数据时,那么在步骤76所述主装置30执行DMA转送。在从DMA控制器46的典型实现方式中,主装置30不必跟踪DMA数据需要从哪个DMA信道发送。从DMA控制器46会自动地把输入DMA数据指向适当的下一DMA信道。为此,从DMA控制器46可以具有一些硬件连接层特定寄存器,所述硬件连接层特定寄存器可由主装置30访问以便启用此功能。在步骤78,主装置30等待要发送到从装置30的更多数据或等待接收到用于表明所述从装置30已经释放了先前所使用的DMA信道的中断。取决于两个指示中的哪个先到,主装置30会改变到适当的状态,即返回到其中两个DMA信道可用的步骤74或移到步骤80。典型情况下,从到主邮箱中断由从装置40用来向主装置30表明已经再次释放信道。然而,也存在其它可用的机制。例如,主装置30可以定期地轮询便笺式寄存器,其中从编程值可以用来导出从装置40是否具有任何可用的主到从DMA信道。假定流程接下来移到步骤80,那么主装置30再次具有需要被转送到从装置40的数据,并且所述主装置30经由从DMA控制器46所选择的DMA信道来发送所述数据。然后流程继续至步骤82,其中主装置30知道从装置没有空闲的可用主到从DMA信道。然后主装置30等待来自从装置的再次释放DMA信道的指示(中断或轮询),并且流程返回到步骤78。
图8以从装置40的观点示出了在主到从DMA转送期间发生的示例性过程。其中,在步骤84从装置40初始化主到从接口。此步骤例如可以包括编程一些硬件连接层特定寄存器48。典型情况下,在步骤84主到从DMA中断的产生(图6(h))也被启用,以及对于两个主到从DMA信道设置在各自寄存器中的单元。当完成所有初始化时,从装置40例如通过把预定值写入便笺式寄存器之一来向主装置30表明已经完成初始化。接下来在步骤86,从装置30等待主装置的DMA数据。在此状态中,从装置具有两个可用的主到从DMA信道。当从装置40接收主到从DMA结束中断时,所述从装置40可以根据DMA状态寄存器(图6(h))来确定为哪个主到从DMA信道产生中断。利用该信息,从装置可以根据信道相应的大小和地址寄存器(图6(i)和6(j))来找到DMA数据的存储单元和大小。然后可以触发例如天线子系统软件之类的从装置软件以便处理所接收的数据。
然后所述过程移到步骤88。其中,从装置40可以检查以便确定对于先前接收DMA数据的DMA信道,它是否具有新的存储单元可以用来重新编程存储器地址(图6(i)),例如是否该DMA信道尚未被清除。如果是的话,更新此DMA信道的地址寄存器,并且向主装置30发送用于表明新的信道可用的信号。这例如可以通过产生用于向主装置表明已经再次释放DMA信道的从到主邮箱中断来实现。然而如上所述,为此也可以使用基于轮询或混合轮询/中断的方案。如果没有存储单元可用并且接收到新的DMA结束中断,那么从装置30可以根据DMA状态寄存器(图6(h))导出为哪个主到从DMA信道产生中断。利用该信息,从装置30可以根据相应的大小和地址寄存器(图6(i)和6(j))来找到DMA数据的存储单元和大小。然后将触发用于处理刚接收数据的从装置软件。
然后从装置30移到步骤90,其中它再次等待新的存储器变为可用,在所述存储器中可以存储主到从DMA包。当此存储器变为可用时,更新用于下一主到从DMA信道的地址寄存器,并且向主装置产生用于表明新的信道可用的触发。那些本领域技术人员应当理解,代替对于DMA转送只使用两个存储单元的循环方法,本发明可以使用三个或更多存储单元来实现上述的两个DMA信道。例如,在步骤88和90,不同于在步骤84所使用的存储器地址可以被编程输入到地址寄存器中的一个或两个中。对于主-从DMA事务使用两个以上存储单元来可以进一步减少等待时间,特别是对于涉及许多数据包的DMA事务来说。
图9以从装置40角度描述了依照本发明示例性实施例的从到主DMA数据转送方法。其中,在步骤92,从装置40初始化主到从接口。此步骤例如可以包括编程一些硬件连接层特定寄存器48。可以取决于稍后描述的通信算法来启用主到从DMA中断(图6(h))。当完成初始化时,从装置40需要向主装置30表明这点。这可以通过向便笺式寄存器之一写入预定值来实现。在步骤94,从装置40等待主装置40已经被初始化的指示。这例如可以通过主装置30轮询主到从便笺式寄存器之一并且等待从装置把预定值写入该寄存器来实现。接下来在步骤96,从装置40等待要发送到主装置30的数据并且具有两个可用的从到主DMA信道。当该数据变为可用时,在步骤98,从装置40为下一DMA信道(图6(c))初始化地址和大小寄存器(图6(k),6(1)),并且向主装置产生已经建立下一从到主DMA转送的指示。此指示可以是通过写入邮箱寄存器或更新主装置所轮询的便笺式寄存器中的值而产生的中断,根据所述值主装置可以导出已经建立新的DMA数据转送。当接收到此指示时,主装置将启动主到从DMA转送。如前所述,从DMA控制器46可以在没有来自主装置30任何介入的情况下,自动地从有效信道获取从到主DMA数据。
在步骤100,从装置40等待要发送到主装置的更多数据或等待接收到用于表明所述主装置已经获取了初始化DMA信道的从到主DMA数据的指示。可以通过使用图6(h)的寄存器中的TX DMA结束中断来提供此指示。此中断会表明已经获取了哪个信道数据。用于提供此指示的另一方法是在获取DMA数据之后,主装置30写入主到从邮箱寄存器,这会为从装置40产生中断。第三个方法是从装置40轮询主到从便笺式寄存器,在获取DMA数据之后将由主装置30更新主到从便笺式寄存器的值。假定在接收用于表明先前从到主DMA转送已经完成的指示之前,从装置具有用于主装置的更多数据,那么过程转移到步骤102。其中,从装置40为仍然可用的DMA信道初始化地址和大小寄存器(图6(k)),6(l)),并且向主装置30产生先前所描述的用于表明已经建立下一从到主DMA转送的指示。然后流程移到步骤104,其中从装置40没有空闲可用的从到主DMA信道,并因此等待来自主装置30用于表明再次释放DMA信道的指示(中断或轮询)。
现在转向图9中从到主DMA转送的主装置观点,在步骤106,主装置30等待从装置40初始化。这例如可以通过主装置30轮询从到主便笺式寄存器之一并且等待从装置40把预定值写入该寄存器来实现。接下来在步骤108,主装置30初始化从DMA控制器46。此步骤例如可以包括编程硬件连接层特定寄存器48。还启用(如果需要的话)从到主DMA中断(图6(h))的产生。当完成初始化时,主装置30需要向从装置40表明这点。此指示例如可以通过把预定值写入主到从便笺式寄存器之一来实现。
然后在步骤110,主装置30等待从到主DMA数据指示。在此状态中没有具有要读取数据的从到主信道挂起。存在几种可以产生数据指示的方式。例如,从装置40可以经由通过从装置写入从到主邮箱寄存器而产生的中断来表明所述从装置40具有准备转送的数据。作为选择,从装置40可以更新在主装置30轮询的便笺式寄存器中的值,根据该值所述主装置30可以确定已经建立了新的DMA数据。当接收到此指示时,主装置30将启动主到从DMA转送。如前所述,依照本发明示例性实施例,主装置30不必跟踪需要丛中获取DMA数据的DMA信道。作为替代,从DMA控制器46可以从有效信道自动地获取从到主DMA。在步骤112,进行从到主DMA转送。主装置30等待结束DMA转送指示(其在主装置内部产生),或等待来自所述从装置40用于表明已经建立又一DMA信道的新的指示。当接收到结束DMA转送指示时,主装置30可以触发将处理所获取数据的功能。取决于从装置使用哪个‘结束从到主DMA转送’指示,主装置可以写入主到从邮箱或便笺式寄存器以便表明完成此转送。当由主装置30接收新的从到主DMA数据指示并且先前DMA转送尚未完成时,过程移到步骤114。其中,进行从到主DMA。主装置等待结束DMA转送指示(其在主装置内部产生)。当接收到结束DMA转送指示时,主装置可以触发将处理所获取数据的功能。还取决于从装置使用哪个‘结束从到主DMA转送’指示,主装置30可以写入主到从邮箱或便笺式寄存器以便表明完成此转送,所述流程返回到步骤100。
在上述的示例性DMA方法中,假定从DMA控制器46具有四个并行DMA信道,但是主装置30没有。如果主装置30也具有四个并行DMA信道,那么主装置的流程图往往与从装置40的流程图类似。另外,为主装置提供四个并行DMA信道可能会使主装置30能够并行建立几个DMA转送。尽管上述例子描述了在每个方向上两个DMA信道,然而那些本领域技术人员应当理解依照本发明的DMA体系结构并不受此限制。作为替代,本发明的实施例可以在每个方向上包含四、八、十六或更多个DMA信道,并且相应增加用于实现体系结构的寄存器数目。
依照示例性实施例,主装置30启动从到主DMA转送。如果从装置40没有利用新的存储器地址大小和来初始化任何从到主DMA信道,那么从DMA控制器46将用DMA大小为零的指示来对从到主DMA转送请求自动作出响应。如上所述,启动从到主DMA数据转送至少可以依照三种不同的方式来实现。第一,可以使用基于轮询的初始化。如果使用此技术,那么主装置30将定期启动从到主DMA命令序列并且尤其读取从到主大小寄存器,以便确定是否已经存储了任何DMA数据来用于转送。如果数据可用,那么执行上面所概述的过程,否则主装置30等候下一轮询间隔。
作为选择,可以使用基于中断的初始化。在从装置40已经编程从到主地址和大小寄存器之后,那么写入邮箱寄存器以便向主装置30产生中断。这依照本发明提供了通过向DMA体系结构提供邮箱寄存器来创建灵活性的又一例子。一旦收到由邮箱寄存器所产生的中断,那么主装置启动从到主DMA序列。可以使用不同的邮箱寄存器来启动从两个不同的DMA存储单元的转送。从装置40应当首先检查邮箱中断状态/控制寄存器中的中断状态位,以便确保对于它想要使用的邮箱寄存器来说中断尚未挂起,以便向主装置30发信号从而启动从到主DMA数据转送。
第三,依照本发明示例性实施例对于从到主DMA转送可以使用基于混合轮询/中断的初始化技术。为了开始,从装置40再次写入邮箱寄存器以便向主装置30产生中断,所述中断被解释为用于启动从到主DMA转送的请求。虽然转送从第一存储单元起发生,但是从装置40利用要转送的下一DMA包来编程寄存器和第二存储单元。然而,代替使用另一邮箱寄存器来向主装置30发送中断信号以便开始转送第二数据部分,主装置30自动启动第二从到主转送序列。然后从装置30使用当完成第一转送时它接收的中断来开始准备第三数据部分以便用于转送。此过程继续直到从装置40消耗掉与此DMA事务相关联的数据,此时从装置40把大小寄存器设置为零。当主装置30请求下一数据块时,它会接收大小零指示并且结束DMA事务。
那些本领域技术人员应当理解,上述DMA体系结构和方法对中断和数据转送提供了足够的可编程性,这有助于在不同类型的主装置、从装置、硬件互连和软件应用之间没有体系结构改变的情况下重新使用上述DMA体系结构和方法本身。用于编程邮箱寄存器以便有选择地启用或禁止中断产生、触发读取便笺式寄存器等的能力使软件开发者能够重新使用与此DMA体系结构相关联的代码,这是因为所述DMA体系结构可以跨过不同的实现方式维持其寄存器结构。
上述示例性实施例在各个方面均意在说明本发明,而并非限制本发明。因而本发明能够在可以由本领域技术人员根据这里所包含的描述而导出的详细实现方式中进行许多变化。所有这种变化和修改被认为在如下权利要求所定义的本发明的范围和精神之内。在本申请说明书中所使用的元件、动作或指令不应当被理解为对本发明来说是关键的或必要的,除非显式地进行了这种描述。这里所用的“一个”意在包括一个或多个项。
权利要求
1.一种用于在主装置(30)和从装置(40)之间转送信息的直接存储器访问(DMA)系统,包括第一多个DMA信道,用于把信息从所述主装置(30)转送到所述从装置(40);第二多个DMA信道,用于把信息从所述从装置(40)转送到所述主装置(30);第一组控制寄存器(图6a,6c,6d,6e,6h,6i,6j),用于协调使用所述第一多个DMA信道来把信息从所述主装置(30)转送到所述从装置(40);和第二组控制寄存器(图6b,6c,6f,6g,6h,6k,6l),用于协调使用所述第二多个DMA信道来把信息从所述从装置(40)转送到所述主装置(30),其中所述第一组控制寄存器和第二组控制寄存器都包括至少一个邮箱寄存器(图6d,6f),用于在所述DMA事务期间响应于由其它所述主装置和所述从装置写到所述至少一个邮箱寄存器的数据,来有选择地向所述主装置(30)和所述从装置(40)中的相应一个提供中断信号。
2.如权利要求1所述的系统,其中所述第一组和第二组控制寄存器中的每个还包括邮箱中断状态/控制寄存器(图6a,6b),用于为所述至少一个邮箱寄存器中的每个启用/禁止邮箱中断产生并且用于表明对于所述至少一个邮箱寄存器中的每个,所述至少一个邮箱中断之一是否挂起。
3.如权利要求1所述的系统,其中所述第一组和第二组控制寄存器中的每个还包括至少一个便笺式寄存器(图6e,6g),用于存储可以响应于由所述至少一个邮箱寄存器所产生的所述中断信号而读取的数据。
4.如权利要求1所述的系统,还包括DMA中断状态/控制寄存器(图6h),用于启用/禁止与完成转送所述信息相关联的数据转送完成中断产生并且用于表明对于第一和第二DMA信道中的每个,所述数据转送完成中断之一是否挂起。
5.如权利要求1所述的系统,还包括第一地址寄存器,用于存储与所述第一多个DMA信道之一相关联的第一地址;第二地址寄存器,用于存储与所述第一多个DMA信道中的另一个相关联的第二地址;第三地址寄存器,用于存储与所述第二多个DMA信道之一相关联的第三地址;和第四地址寄存器,用于存储与所述第二多个DMA信道中的另一个相关联的第四地址。
6.如权利要求1所述的系统,还包括第一大小寄存器,用于存储使用所述第一多个DMA信道之一来转送的所述信息的大小;第二大小寄存器,用于存储使用所述第一多个DMA信道中的另一个来转送的所述信息的大小;第三大小寄存器,用于存储使用所述第二多个DMA信道之一来转送的所述信息的大小;和第四大小寄存器,用于存储使用所述第一多个DMA信道中的另一个来转送的所述信息的大小。
7.如权利要求1所述的系统,还包括DMA状态/控制寄存器(图6c),用于对于所述第一和第二多个DMA信道中的每个表明DMA转送活动是否正在进行。
8.如权利要求1所述的系统,其中写到所述至少一个邮箱寄存器的所述数据是要求转送更多数据的命令。
9.如权利要求1所述的系统,其中写到所述至少一个邮箱寄存器的所述数据是用于激活所述从装置和所述主装置之一的特征的命令。
10.如权利要求9所述的系统,其中所述特征是减少功率消耗特征。
11.一种用于在主装置(30)和从装置(40)之间转送直接存储器访问(DMA)信息的方法,包括步骤存储在DMA事务期间使用第一DMA信道所接收的第一数据部分;存储在所述DMA事务期间使用第二DMA信道所接收的第二数据部分;并且通过在所述DMA事务期间由其它所述主装置(30)和所述从装置(40)把数据写到至少一个邮箱寄存器(图6d,6f)中,来有选择地向所述主装置(30)和从装置(40)之一提供中断信号。
12.如权利要求11所述的方法,还包括步骤对于所述至少一个邮箱寄存器(图6d,6f)中的每个启用/禁止邮箱中断产生并且使用邮箱中断状态/控制寄存器(图6a,6b)来表明对于所述至少一个邮箱寄存器中的每个,所述至少一个邮箱中断之一是否挂起。
13.如权利要求11所述的方法,还包括步骤响应于所述中断信号来读取在至少一个便笺式寄存器(图6e,6g)中所存储的数据。
14.如权利要求11所述的方法,还包括步骤启用/禁止与完成存储所述第一和第二数据部分相关联的数据转送完成中断产生,并且使用DMA中断状态/控制寄存器(图6h)来表明对于所述第一和第二DMA信道中的每个,所述数据转送完成中断之一是否挂起。
15.如权利要求11所述的方法,还包括步骤存储与所述第一DMA信道相关联的第一地址;并且存储与所述第二DMA信道相关联的第二地址。
16.如权利要求11所述的方法,还包括步骤存储所述第一数据部分的大小;并且存储所述第二数据部分的大小。
17.如权利要求11所述的方法,还包括步骤提供关于在所述第一和第二DMA信道中转送活动当前是否正在进行的指示。
18.如权利要求11所述的方法,其中写到所述至少一个邮箱寄存器的数据是要求转送更多数据的命令。
19.如权利要求11所述的方法,其中写到所述所述至少一个邮箱寄存器的数据是用于激活所述从装置和所述主装置之一的特征的命令。
20.如权利要求19所述的方法,其中所述特征是减少功率消耗特征。
21.如权利要求15所述的方法,还包括步骤使用所述第一DMA信道来存储第三数据部分。
22.如权利要求21所述的方法,还包括步骤在存储所述第三数据部分的所述步骤之前,利用不同于所述第一地址的第三地址来重新编程包含所述第一地址的寄存器。
23.如权利要求21所述的方法,还包括步骤使用所述第二DMA信道来存储第四数据部分。
24.如权利要求23所述的方法,还包括步骤在存储所述第四数据部分的所述步骤之前,利用不同于所述第二地址的第四地址来重新编程包含所述第二地址的寄存器。
25.如权利要求1所述的系统,其中所述第一组和第二组控制寄存器中的每个还包括至少一个便笺式寄存器,用于存储可以由所述主装置和所述从装置之一所读取的状态信息。
全文摘要
依照本发明的系统和方法描述了健壮的DMA体系结构,所述DMA体系结构包括在DMA转送期间能够灵活地支持高层硬件/软件服务需要的寄存器。这种寄存器尤其包括邮箱寄存器和便笺式寄存器,所述寄存器向依照本发明的DMA体系结构和方法提供用于提供多个中断信道的能力和溢出数据转送的能力,所述能力允许在只改变DMA体系结构编程而不改变其体系结构的情况下重新使用这些DMA体系结构。还描述了使用候选存储单元的循环DMA转送。
文档编号G06F13/32GK1856777SQ200480027468
公开日2006年11月1日 申请日期2004年9月22日 优先权日2003年9月23日
发明者G·弗雷德里克斯 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1