CN101218569A - 用于控制dma任务的执行的装置和方法 - Google Patents
用于控制dma任务的执行的装置和方法 Download PDFInfo
- Publication number
- CN101218569A CN101218569A CNA2005800509631A CN200580050963A CN101218569A CN 101218569 A CN101218569 A CN 101218569A CN A2005800509631 A CNA2005800509631 A CN A2005800509631A CN 200580050963 A CN200580050963 A CN 200580050963A CN 101218569 A CN101218569 A CN 101218569A
- Authority
- CN
- China
- Prior art keywords
- dma
- dma task
- task
- clocking
- operation response
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
本发明涉及一种用于控制第一DMA任务的执行的方法(600),该方法包括监视第一DMA任务的执行(650),该方法(600)特征在于,定义第一DMA任务执行间隔与第一DMA任务执行子间隔(610);以及如果在第一DMA任务执行子间隔期间未完成第一DMA任务,则执行第一可能的计时冲突响应操作(660)。本发明还涉及一种具有第一DMA任务控制性能的装置(90),该装置包括存储器单元(94);其特征在于包括DMA控制器(100),该DMA控制器适用来监视第一DMA任务的执行,包括访问该存储器单元(94),以及适于在第一DMA任务执行子间隔期间未完成第一DMA任务的情况下执行第一可能的计时冲突响应操作。
Description
技术领域
本发明涉及用于控制DMA任务的执行的装置和方法。
背景技术
最近十年以来,集成电路的复杂性极大地提高了。为了支持各种应用,例如,但不局限于,多媒体应用、实时应用等,正在研究芯片上系统和其他多核集成电路。
现代的集成电路能够实质上并行执行大量任务。其中某些任务要求在存储器映射装置之间传输相对大量数据。多通道直接存储器存取(DMA)控制器可以管理多个数据传输,同时减少了来自集成电路核心(处理器)的加载。然而,DMA控制器还可以通过每当完成特定DMA任务时发布中断来加载这些核心。
以下所有的在此引用作为参考的专利和专利申请描述了各种DMA控制器:Olivier等人的美国专利6738881、Wunderlich的美国专利6122679、Amini等人的美国专利5450551、Farazmandnia等人的美国专利6728795、Kihara的美国专利4502117、Brewer等人的美国专利4556952、Riley等人的美国专利5838993、Wolford等人的美国专利5692216、5603050和5884095、Loyer等人的美国专利6298396、Morrison等人的美国专利6542940、Leichty等人的美国专利6041060、Goff等人的序列号为2004/0073721A1的美国专利申请、Takashi等人的序列号为20040037156A1的美国专利申请、Cheung的序列号为2004021618A1的美国专利申请、Hedeki等人的公开号为JP07168741A2的日本专利、Masahiko的公开号为JP06187284A2的日本专利、Yoshihiro的公开号为JP2004252533A2的日本专利、Tadayoshi等人的公开号为JP04324755A2的日本专利、Hiroyuki的公开号为JP2004013395A2的日本专利、Tetsuya的公开号为JP08249267A2的日本专利、Katsuyuki等人的公开号为JP02048757A2的日本专利以及Simon等人的公开号为WO2005/013084的PCT专利申请。
由于DMA任务的复杂性,所以大量DMA任务研究员在定义每一个DMA任务的优先级上花费了许多资源。这些优先级可以被定制于专用程序。
这就需要提供一种用于控制DMA任务的执行的装置和方法。
发明内容
一种如所附权利要求所述的用于控制DMA任务的执行的装置和方法。
附图说明
从以下结合附图的详细描述将更加全面地了解和理解本发明,其中:
图1示出了一种根据本发明实施例的装置;
图2示出了一种根据本发明实施例的DMA控制器;
图3示出了一种根据本发明实施例的总线接口;
图4示出了根据本发明实施例的文件寄存器的各个寄存器;
图5示出了一种根据本发明实施例的缓冲器描述符表;
图6示出了一种根据本发明实施例的四维缓冲器;
图7示出了一种根据本发明实施例的DMA通道和选定的DMA通道逻辑;
图8示出了根据本发明实施例在示范性数据传输操作中涉及的各个缓冲器;
图9是一种根据本发明实施例的在多个DMA任务请求之间进行仲裁的方法的流程图;
图10是一种根据本发明实施例的用于控制第一个DMA任务的执行的方法的流程图;
图11是一种根据本发明实施例的用于执行DMA任务的方法的流程图;
图12是一种根据本发明实施例的用于控制多个DMA任务的方法的流程图。
具体实施方式
以下附图示出了本发明的示范性实施例。它们并不是打算用来限定本发明的范围,而是帮助理解本发明的某些实施例。还要注意所有附图都不是按照比例绘制的。
DMA任务包括从一个位置到另一个位置的信息传输。DMA任务可以要求许多DMA事务处理(transaction)。每个DMA任务的DMA事务处理的数量响应于在DMA任务期间应当传输的数据的总大小与在单个DMA事务处理期间能够传输的数据的大小之间的关系。还要注意,DMA事务处理的数量可以响应于DMA事务处理的成功,这是因为在失败的DMA事务处理后面可以有数据的重发,该数据是在失败的DMA事务处理过程中要传输的数据。
单个DMA任务可以包括多个DMA子任务。单个DMA子任务可以包括要求多个DMA事务处理。DMA子任务与对多维缓冲器中单个维度的写入(或从其读出)有关。
周期性DMA任务可以包括多个DMA任务循环(iteration)。每一个周期性DMA任务操作可以包括多个DMA事务处理,并且可以包括多个DMA子任务。一个DMA循环可以认为是重复性的DMA任务,除非它被掩蔽、冻结、去使能(disabled)或者要不然就被停止。
多维缓冲器包括多个相互链接的缓冲器段。这些段可以形成连贯的地址范围,但这不是必需的。
缓冲器通常与多个逻辑组件例如寄存器有关。一个多维缓冲器比一组独立的缓冲器(虽然其中每一个缓冲器对应于多维缓冲器中一个单独的维度)要求更少的逻辑。方便地,多维缓冲器包括多个存储器段。由每一个维度的大小信息来定义存储器段的数量。特定维度的大小信息表示在之前维度的大小与当前维度的大小之间的比率。比如说,如果第一个维度包括Z个基本存储器段,而第二个维度的大小信息为Y,则该二维缓冲器包括(ZxY)个存储器段。
根据本发明的实施例,多个DMA任务可以是基于周期时间的DMA任务。基于周期时间的DMA任务是重复的DMA任务,但是它的重复率受到DMA任务执行周期的限制。方便地,在单个DMA任务执行周期内应当仅执行基于单一周期时间的DMA任务。
根据本发明的实施例,可以将大量的DMA任务定义为基于周期时间的DMA任务,因此降低了DMA控制器预编程的复杂性。而且,利用基于周期时间的DMA任务防止了在每一个周期对DMA控制器进行编程。
方便地,提供了一种装置(例如图1的装置90)。该装置包括至少一个存储器单元以及适用来访问该存储器单元的DMA控制器。装置90适用来在该至少一个存储器单元内实现多维缓冲器。该装置包括DMA控制器100,它适用来执行多个DMA子任务,其中该执行包括在缓冲器间的跳变点上在缓冲器之间跳转;其中,所述缓冲器间的跳变点基本被定义在多个多维缓冲器当中的每一个多维缓冲器的一个或多个维度的末端。
方便地,提供了一种装置(例如图1的装置90)。装置90包括一个或多个存储器单元(例如图1的存储器单元93、94)。装置90还包括DMA控制器100,它适用来:(i)访问为多个DMA通道中的每一个DMA通道而定义的多个缓冲器描述符当中的至少一个缓冲器描述符,其中至少两个缓冲器描述符包括计时信息,该计时信息控制基于周期时间的DMA任务的执行;(ii)接收多个DMA任务请求,(iii)从该多个DMA任务请求当中选择DMA任务请求,以及(iv)执行DMA任务或DMA任务循环,并更新与所选定的DMA任务请求有关的缓冲器描述符,以此来反映该执行。
以下的说明描述了各种计数器。本领域技术人员将理解可以使用向上计数器和向下计数器而不脱离本发明的范围。因此,可以用计数器减量操作来代替计数器增量操作。
为了简单起见,以下附图并不包括在实际系统中要求的本领域技术人员所理解的特定细节。比如说,没有显示某些控制路径和供电路径。这些将从以下进一步的描述中显而易见。通常地,存在许多可能的方法来在硬件中实现系统90和DMA控制器100的逻辑功能,而附图仅仅是用于图示说明的目的。本领域技术人员将基于此处的描述而理解如何实现系统90,尤其是DMA控制器100。
图1示出了根据本发明实施例的系统90。系统90包括DMA控制器100以及附加组件。
方便地,装置90具有第一DAM任务控制性能。它包括存储器单元和DMA控制器,该DMA控制器适用来监视第一DMA任务的执行,该执行包括访问存储器单元,并适用来在第一DMA任务执行子间隔期间未完成第一个DMA任务的情况下执行第一可能的计时冲突(timingviolation)响应操作。
DMA控制器100可以连接到多个存储器映射组件,并且可以是各种片上系统的系统的一部分。发明人使用了一种32通道DMA控制器100,但是可以改变DMA通道的数量。多个寄存器和逻辑与每一个DMA通道有关。方便地,多个诸如但不局限于外围设备、核心和存储器单元的组件可以连接到DMA控制器100。方便地,DMA控制器可以动态地选择运行哪一个组件。因此,仅仅是在DMAS控制器与组件之间的连接并不必然意味着DMA通道被分配给该组件。
总线91连接到DMA控制器100、总线媒体访问控制器(用MAC表示)98、多个核心92、多个存储器单元94、外部高级存储器接口95和通信端口,例如以太网端口97和PCI 99。另外,多个(M个)外围设备98连接到DMA控制器100。
注意,DMA控制器100的不同端口可以连接到不同的总线,可以用多个总线来代替总线91,方便地,每一个总线都具有它自己的MAC。
系统90包括多个存储器单元,包括在DMA控制器100内的内部存储器单元(未显示)。可以在各个存储器单元内存储各种信息。方便地,在存储器单元94内存储缓冲器描述符。注意,可以在DMA控制器100本身内存储至少一个缓冲器描述符,但是这不是必需的。缓冲器描述符所指示的缓冲器可以实现在存储器单元94或外部高级存储器单元93内。
预先对缓冲器描述符进行编程,而且该缓冲器描述符包括用于控制DMA任务的信息。
图2示出了根据本发明实施例的DMA控制器100。
DMA控制器100包括两个I/O端口172和174、I/O端口接口160、总线接口140、多个FIFO 150、PRAM 130、DMA逻辑120、通道逻辑与仲裁器110以及寄存器文件200。
DMA逻辑120连接到总线接口140、通道逻辑与仲裁器110、寄存器文件200、参数RAM(PRAM)130和FIFO 150。PRAM 130连接到总线接口140和通道逻辑与仲裁器110。寄存器文件200连接到通道逻辑与仲裁器100。FIFO 150连接到总线接口140。I/O端口接口160连接到I/O端口172和174以及总线接口140。
注意,DMA控制器100可以包括对于每一个I/O端口的总线接口和I/O端口接口,但是为了解释的简单性,只示例了一个I/O端口160和一个单独的总线接口140。
两个I/O端口172和174连接到总线176,该总线连接到像存储器单元94那样的外部存储器单元。双I/O端口有利于并行执行两个DMA任务。注意,I/O端口的数量可以不同于两个。
存储器单元94存储缓冲器描述符,而且还用来实现缓冲器。这些缓冲器可以包括单维缓冲器或多维缓冲器。多维缓冲器包括多个相互链接的地址范围。注意,可以在一个或多个存储器单元内存储缓冲器描述符,同时可以用一个或多个其他存储器单元来实现缓冲器。缓冲器描述符定义了DMA任务的各种特性,例如缓冲器的位置、为完成DMA任务或DMA子任务而要传输的剩余数据(所述大小还称为剩余大小)、缓冲器维度数、DMA任务的计时、一旦DMA任务结束和/或缓冲器为满或空时要执行的操作等等。
比如说,缓冲器描述符可以包括指令或控制信息,它们使DMA控制器在一旦缓冲器为满的情况下执行以下操作中的一种:(i)关闭DMA通道(比如说,通过阻止DMA通道向仲裁器发送DMA任务请求),(ii)重新初始化(由此实现周期性缓冲),(iii)一旦特定的重新写入周期期满进行重新初始化(由此实现基于时间的周期性缓冲),(iv)重新设置缓冲器大小(由此实现增量缓冲),或者(v)切换到另一个缓冲器(由此实现链接缓冲)等。
方便地,通过用户或另一个实体来定义缓冲器描述符,并且在一个或多个存储器单元94内存储该缓冲器描述符。每一个DMA通道可以与多个缓冲器描述符相关。可以按照多种方式来布置这些缓冲器描述符,例如,但不局限于,缓冲器描述符表(BDT)。每一个DMA通道可以与唯一的BDT相关。
对于与缓冲器描述符,可以应用多种数据检索(retrieval)方法。方便地,在第一次通过仲裁器选择特定的DMA任务请求时,从存储器单元94中检索相关的缓冲器描述符。然后在PRAM 130中存储该缓冲器描述符,通过DMA控制器100更新该缓冲器描述符,并最终将其写回到存储器单元94。所述写回操作可以发生在DMA任务结束时,但这不是必需的。
通道逻辑与仲裁器110包括接口420和仲裁器410。它接收来自于各种存储器管理组件(诸如但不局限于外围设备96)的DMA任务请求,并执行仲裁序列以从这些DMA任务请求当中选择一个请求。
接口420可以适用来在向仲裁器410发送DMA任务请求之前,检验是否可以进行DMA任务(如果相关的DMA任务请求赢得了仲裁对话)。该检验可以包括确定DMA通道是否为使能的、非冻结的,是否可以I/O端口可以服务,和/或是否暂时掩蔽DMA任务请求等。
比如说,如果特定的DMA任务是基于时间的周期性DMA任务,以及如果在预定的DMA任务周期内执行之前的DMA任务,就可以暂时掩蔽DMA任务请求。
根据本发明的实施例,仲裁器410适用来响应于与DMA任务有关的计时期限而从多个DMA任务请求当中选择DMA任务请求。方便地,仲裁器410适用来响应于预定的优先级而在与基本相同的计时期限有关的DMA任务请求之间进行选择。
方便地,仲裁器410适用来通过应用计时无差异仲裁方案(timingindifferent arbitration scheme)来在与基本相同的计时期限有关的DMA任务请求之间进行选择。这样的一种仲裁方案并不响应于计时期限,并可以包括任何众所周知的现有技术仲裁方案,例如循环复用(roundrobin)、加权的循环复用、固定优先级、动态分配的优先级、加权的公平队列、低延迟队列等。动态分配的优先级可以每一个或多个仲裁周期改变DMA请求的优先级。其中至少某些仲裁方案可以限制特定的DMA通道所消耗的带宽量。
方便地,仲裁器410适用来响应于至少一个可用带宽参数(ABP)来选择DMA任务。该可用带宽参数可以是连接到总线的装置的数量、总线带宽、总线状态(总线是否繁忙)等,其中该总线还连接到DMA控制器100。根据本发明的实施例,仲裁器就忽略那些一旦仲裁结束无法执行的DMA任务请求。比如说,某些DMA任务要求总线不繁忙,而且数据接收方可用。如果不满足这些条件,仲裁器410就可以忽略包括在繁忙的总线上传输数据和/或向繁忙的数据接收方传输数据的DMA请求。
方便地,仲裁器410适用来响应于至少一个请求的带宽参数(RBP)来选择DMA任务。所述请求的带宽参数可以是为完成DMA任务而要求的数据传输操作的数量、在每一个数据传输过程中传输的数据的大小等。
根据本发明的实施例,仲裁器410可以响应于一个或多个RBP以及一个或多个ABP来选择DMA任务。
根据本发明的实施例,每一个DMA任务可以与I/O端口172和174中的一个相关。在这样一种情况下,仲裁器410可以执行两个独立的仲裁对话。第一个仲裁对话选择与I/O端口172相关的DMA任务,而另一个对话选择与I/O端口174相关的DMA任务。可以并行执行这两个仲裁对话。
根据本发明的另一个实施例,DMA任务并不是一开始与特定的I/O端口相关的。在这种情况下,仲裁器410可以选择两个DMA任务,然后DMA控制器100将判定哪一个I/O端口将服务于DMA任务。
根据本发明的实施例,仲裁处理包括两个阶段。在第一阶段期间,仲裁器410将DMA任务划分到预定的计时期限范围。然后,它在与最短的计时期限范围相关的DMA任务之间进行选择。发明人使用了8比特计时期限值和四个计时期限范围(0和1)、(2到7)、(8到63)和(64到255),但是也可以定义其他范围。
DMA控制器100包括多个FIFO 150。方便地,对每一个DMA通道分配一个FIFO。可以向DMA逻辑120提供FIFO的状态,DMA逻辑120可以响应于该状态而向通道逻辑与仲裁器110发送一个或多个DMA请求。比如说,如果特定的FIFO为空,则DMA逻辑120可以判定填满它(通过执行写操作),而且当它为满时,DMA逻辑120可以决定清空它(通过执行读操作)。通道逻辑与仲裁器110可以决定在DMA任务之间进行仲裁,或者响应于DMA通道状态(冻结、去使能、解冻、使能)、I/O端口可用性、与DMA通道相关以参与到DMA传输中的组件的当前性能等而暂时忽略它们。
之前提到,如果在DMA任务期间应当使用的I/O端口繁忙,DMA任务请求就不进入仲裁对话。注意,DMA控制器的不同部件可以执行这一检验。根据本发明的另一实施例,不检验I/O端口的状态,而且如果这一DMA任务请求赢得了仲裁对话,就可以将它存储在DMA控制器100的内部队列中,忽略或暂时忽略该DMA任务请求。
图3示出了根据本发明实施例的总线接口140。总线接口140包括DMA任务请求采样单元(RSU)142,写FIFO 144,读FIFO 146和任务管理器148。RSU 142对DMA逻辑提供的DMA任务请求进行采样,并将其发送到I/O端口接口160。
RSU 142对DMA逻辑发送的DMA任务请求进行采样。一旦检测到DMA任务请求,就将它发送到I/O端口接口160。如果与该DMA任务请求相关的I/O端口不繁忙,则对该请求提供服务。方便地,在一个时钟周期之后对该请求提供服务,但这不是必需的。
如果与该DMA任务请求相关的I/O端口繁忙,则RSN 142可以向DMA逻辑120发送RSU繁忙信号。方便地,在任务管理器148的队列内存储该DMA任务请求直至对该DMA任务请求提供服务为止。
任务管理器148包括能够存储少量(例如8个)DMA任务请求的队列。一旦任务管理器148满了,它就向DMA逻辑发送任务管理器繁忙指示信号,以暂时阻断来自于DMA逻辑的新的请求。注意,可以对每一个I/O端口分配队列。
总线接口140包括内部的读FIFO 146和写FIFO 148。这些FIFO使计时约束缓和并提供一种用于通过I/O端口接口160和I/O端口172和174的读和写操作的流水线(pipelined)结构。
图4示出了根据本发明实施例的文件寄存器200的多种寄存器。
根据本发明的实施例,文件寄存器200包括一个或多个影子寄存器(shadow register)。影子寄存器与相应的寄存器相关,而且即使是当寄存器正在使用时,也可以允许更新该寄存器的内容。
文件寄存器200包括多个可编程寄存器,例如DMA缓冲器描述符基本寄存器、DMA通道配置寄存器、DMA全局配置寄存器220、DMA通道使能寄存器230、DMA通道去使能寄存器232、DMA通道冻结寄存器234、DMA通道解冻寄存器236、DMA EDF寄存器、DMAEDF掩蔽寄存器250、DMA EDF状态寄存器254、DMA错误寄存器260以及多种调试寄存器、轮廓(profiling)寄存器、附加状态寄存器和更新寄存器。
每一个DMA通道都与一个缓冲器描述符表(BDT)相关。BDT包括多个缓冲器描述符。每一个DMA通道都具有DMA缓冲器描述符基本寄存器,例如寄存器202,它存储该DMA通道的缓冲器描述符表的基本地址。
每一个DMA通道都与一个DMA通道配置寄存器相关,例如DMA通道配置寄存器210。它包括以下字段:DMA通道激活(ACTV)字段212、源I/O端口(SPRT)字段213、目的I/O端口(DPRT)字段214、源多维(SMDC)字段215、目的多维(DMDC)字段216、源BDT指针217、目的BDT指针218、循环复用优先级组(RRPG)字段219。另外,这些寄存器可以包括诸如源/目的延迟或使用最优方案等。
ACTV 212指示DMA通道是否为激活的。SPRT 213指示源I/O端口,而DPRT 214指示目的I/O端口。SMDC 215指示源缓冲器是否为多维缓冲器。DMDC 216指示目的缓冲器是否为多维缓冲器。
源BDT指针217包括在BDT内对源缓冲器描述符的偏移量。目的BDT指针218包括在BDT内对目的缓冲器描述符的偏移量。根据缓冲器描述符基本地址与该偏移量计算选定的缓冲器描述符的地址。
RRPG 219指示在循环复用仲裁方案中DMA通道的优先级。
DMA全局配置寄存器220包括多种字段,诸如内部的或外部的缓冲器描述符使能字段222、仲裁类型字段224等。配置仲裁类型字段以便在多个可用仲裁方案之间进行选择。比如说,这些仲裁方案可以包括基于计时期限的仲裁方案、计时期限无差异仲裁方案、和/或它们的组合。
DMA通道使能寄存器230包括多个比特。每一个置位比特指示相关的DMA通道被使能。忽略复位比特。DMA通道去使能寄存器232对于每一个DMA通道都包括一个比特。如果设置该比特,则去使能DMA通道。忽略复位比特。DMA通道冻结寄存器234对于每一个DMA通道都包括一个比特。如果设置该比特,则冻结DMA通道。冻结的DMA通道与去使能的DMA通道之间的差异在于,冻结的DMA通道的请求被考虑而不服务该请求,而忽略去使能的DMA通道的请求。冻结的DMA通道的DMA通道设置并不改变且保持有效。DMA通道解冻寄存器236对于每一个DMA通道都包括一个比特。如果设置该比特,则该DMA通道被解冻,其离开冻结状态。
每一个DMA通道都与一个DMA EDF寄存器相关,例如DMAEDF寄存器240。它包括三个计时字段。第一个计时字段称为当前计数器字段242,而且它存储与该DMA字段相关的计时计数器的当前值(当前时间)。第二个计时字段称为阈值字段244,而且它存储阈值,该阈值反映当DMA任务按期时的计时计数器的值。第三个计时字段称为基本计数器字段246,而且它存储基本计数器值,在初始化计时计数器时向计数器加载该基本计数器值。方便地,DMA任务执行周期反映了基本计数器值与阈值之间的差异。计时期限反映了当前计数器值与阈值之间的差异。
方便地,一旦DMA通道被去使能,与该DMA通道相关的计时计数器就停止。在该DMA通道被使能时,该通道的计时计数器重新加载以基本计数器值。
DMA EDF掩蔽寄存器250包括多个比特,它们在计时期限一旦发生或者将要发生时,要么使能中断请求的生成,要么掩蔽中断请求的生成。根据本发明的实施例,如果在DMA任务执行周期的预定子周期内没有完成特定的DMA任务,就可以指示出现了可能的计时冲突。可由子周期阈值来定义该子周期。一旦经过该阈值,DMA控制器100或另一个装置(例如核心92)可以执行以下操作中至少一种操作:(i)删除DMA任务,(ii)增加DMA任务的优先级,(iii)迫使DMA任务的执行,(iv)如果这是基于周期时间的DMA任务,允许将要在下一个DMA任务执行周期内执行多于一个DMA任务,(v)迫使一个或多个DMA事务处理的执行,(vi)迫使一个或多个DMA子任务的执行等。
DMA EDF状态寄存器254指示是否出现一个或多个计时冲突。DMA错误寄存器260包括多个字段,这些字段指示各种错误的出现。这些错误可以包括各种I/O端口错误、地址错误、PRAM奇偶校验失败、FIFO错误、计时冲突错误等。
图5示出了一种根据本发明实施例的缓冲器描述符表300。
每一个DMA通道都与缓冲器描述符表(BDT)相关。便利地,BDT 300存储在一个或多个存储器单元94内,并开始于一个BDT基本地址。BDT 300包括缓冲器描述符的列表,这些缓冲器描述符可以与DMA通道的各种DMA任务相关。预先对BDT 300进行编程,尽管可以以各种方式来更新BDT 300。
方便地,存在读缓冲器描述符和写缓冲器描述符。其中每一个缓冲器描述符都可以是单维缓冲器描述符或多维缓冲器描述符。
BDT 300包括共同地用302来表示的多维读缓冲器描述符和共同地用304来表示的多个单维写缓冲器描述符。注意,读缓冲器描述符可以包括一个或多个单维缓冲器描述符和/或一个或多个多维缓冲器描述符。写缓冲器描述符可以包括一个或多个单维缓冲器描述符和/或一个或多个多维缓冲器描述符。
注意,每一个BDT都可以包括大量缓冲器描述符。发明人使用了一种具有高达1024个单维写缓冲器描述符的DMA控制器,但是可以使用其他数量和类型的缓冲器描述符。方便地,如果仅仅使用少量的缓冲器描述符,则可以在DMA控制器100内存储这些缓冲器描述符。
像BD 310那样的单维缓冲器描述符包括四个字段:BD_ADDR312、BD_SIZE 314、BD_BSIZE 316和BD_ATTR 320。每一个字段为32个比特长。BD_ADDR 312包括指向当前缓冲器条目(entry)的指针。该指针扫描缓冲器,并在每一个DMA事务处理时递增。BD_SIZE314指示为了完成DMA任务或DMA子任务而要传输的剩余数据的大小。每当完成DMA事务处理时,就将该值减去DMA事务处理大小。方便地,当该字段达到0时,DMA任务完成。BD_BSIZE 308存储该缓冲器的基本大小(将要在整个DMA任务期间传输的数据的总大小)。
BD_ATTR 320包括以下字段:(i)SST 321,它指示是否在DMA任务结束时生成掩蔽的中断请求,(ii)CYC 322,它指示缓冲器是否为周期性的或是递增的,(iii)CONT 323,它指示当BD_SIZE达到0时是否关闭缓冲器,(iv)NPRT 324,它指示在下一个DMA任务期间要使用哪一个I/O端口,(v)NO_INC 325,它指示是否在完成一个DMA任务之后递增缓冲器地址(通常通过改变缓冲器偏移量),(vi)NBD 326,它选择将用于下一个DMA任务的缓冲器,(vii)PP 328,它设置将由MAC 98考虑的缓冲器优先级,(viii)TSZ 330,它指示在单个DMA任务期间可以传输的最大数据量,(ix)RFZ 331,它指示一旦BD_SIZE达到0时,是否冻结缓冲器,(x)MR 332,它指示在DMA控制器发送的数据达到其目的地之前,是否掩蔽来自于DMA通道的请求,(xi)BTSZ 333,它指示DMA事务处理大小,以及(xii)EDF 327,它指示如果选择了基于计时期限的仲裁,一旦BD_SIZE达到0如何激活该缓冲器。
EDF 327可以指示(a)DMA通道与仲裁器是否可以继续正常工作(以连续的方式),(b)是否应当为EDF计数器加载基本计数器值,或者(c)是否可以掩蔽DMA通道的DMA任务请求直至从该任务的开始经过了预定的时间周期(比如说,EDF计数器达到0)。一旦后者出现,则将计数器加载以基本计数器值。
为了便于进行解释,示例了四维缓冲器和四维缓冲器描述符340。注意,多维缓冲器可以具有两个、三个或多于四个的维度。四维缓冲器的DMA任务包括四个DMA子任务。
多维缓冲器描述符340包括单维缓冲器描述符的字段以及附加字段。它还包括比单维缓冲器描述符更多的属性字段。
当使用多维缓冲器描述符时,可以分别监视每一个维度(DMA子任务)。因此,代替指示将要在DMA任务期间传输的数据的剩余大小的单个值(BD_SIZE),存在三个附加计数器,它们计数第一维度的剩余重复(C2DIM 362),第二维度的剩余的重复(C3DIM 363),第三维度的剩余的重复(C4DIM 364),以便完成第二、第三和第四维度。另外,每一附加维度具有它自己的偏移量(代替单维BD_ADDR 312字段)及其重复基本计数(BC2DIM 272、BC3DIM 273和BC4DIM 274),它们指示第二、第三和第四维度中每一个的重复的总数。
除了字段321-327之外,附加的属性字段也属于属性字段320’,并且包括:LAST 341、BD 342、SSTD 343、FRZD 344、CONTD 345和MRD 346。
LAST 341指示缓冲器是否是成链的缓冲器链中最后一个,以及如果是的话一旦填满(写操作)或清空(读操作)缓冲器就关闭DMA通道。BD 342指示缓冲器的维数(例如4)。SSTD 343指示第一、第二、第三或第四DMA子任务的完成是否将设置完成状态比特。FRZD 344指示第一、第二、第三或第四DMA子任务的完成是否将致使DMA控制器冻结该DMA通道。CONTD 345通过指示在第一、第二、第三或第四DMA子任务完成之后,何时DMA通道将会切换到下一个缓冲器描述符,来定义缓冲器间的跳变点。CONTD 345便于在完成整个DMA任务之前切换缓冲器。MRD 346指示何时掩蔽DMA通道请求。
图6示出了一种根据本发明实施例的四维缓冲器350。
缓冲器350包括64个字节的128×256×128个存储器段。在属于第一维度的连续的存储器段之间的偏移量是448个字节。因此,BD_BSIZE等于64,BC2DIM等于128,BC3DIM等于256,而BC4DIM等于128。
整个缓冲器可以包括多个缓冲器间的跳变点,它们对应于各个维度的末端点。比如说,第一组可能的缓冲器间的跳变点可以位于每一个存储器段的末端(对应于第一维度的大小)。第二组可能的缓冲器间的跳变点可以位于每一个128个存储器段(对应于第一维度的大小)。第三组可能的缓冲器间的跳变点可以位于每一个32768个存储器段(对应于第三维度的大小)。
比如说,可以将缓冲器间的跳变点定义在这些可能的末端点中任意一个上。在缓冲器间的跳变点之间的选择响应于CONTD 345的值。比如说,如果COND等于1,则每当访问存储器段时,该处理都跳转。因此,如果存在多个例如350的多维缓冲器,则访问其中每一个存储器的第一维度,然后访问其中每一个缓冲器的第二维度,直至访问了所有维度为止。比如说,如果COND 345等于2,则选择第二组缓冲器间的跳变点。
注意,根据本发明的实施例,该跳转响应于对继续该DMA任务的确定。在某些情况下,一旦达到特定的缓冲器间的跳变点,装置90就鉴于至少一个参数,例如所接收的信息的内容、之前的DMA子任务的成功等,来确定是否进行下去。
如果将四维缓冲器350定义为周期性的缓冲器,则在访问最后一个存储器段之后,访问第一个存储器段。
图7示出了根据本发明实施例的DMA通道逻辑440和选定的DMA通道逻辑460。
DMA控制器100可以管理多个DMA通道。为了解释的简单性,图7示出了DMA通道逻辑440和选定的DMA通道逻辑460,其管理单一DMA通道。
DMA通道逻辑440位于通道逻辑与仲裁器110内。通道逻辑与仲裁器110对于每一个DMA通道都包括这样的逻辑。
选定的DMA通道逻辑460位于DMA逻辑120内。DMA逻辑120包括单一的DMA通道逻辑460,它管理选定的DMA任务请求。比如说,如果DMA控制器100适用来基本上同时管理多于一个的DMA任务,它应当包括例如逻辑460那样的附加逻辑。比如说,如果DMA控制器100适用来管理每I/O端口(172和174)一个DMA任务,它应当包括两个选定的DMA通道逻辑。
DMA通道逻辑440包括计时计数器单元442和附加的通道逻辑448。
计时计数器单元442包括至少一个计时计数器,例如计算从各个事件开始所经过的时间的计时计数器444,所述事件例如(i)执行DMA任务、DMA子任务或DMA事务处理的开始,(ii)对DMA任务请求的接收,(iii)在DMA任务请求的选择时等等。
可由附加的通道逻辑448采样并重新加载计时计数器444。另外,附加的通道逻辑444可以只有在这些DMA任务请求是有效的和/或可由I/O端口对其提供服务的情况下,才允许向通道逻辑与仲裁器110发送DMA任务请求。为了执行该任务,附加的通道逻辑448访问寄存器文件200中的不同字段,并且方便地,可以访问缓冲器描述符。比如说,它访问DMA通道使能寄存器230、DMA通道去使能寄存器232、DMA通道冻结寄存器234等。可以通过附加的通道逻辑448掩蔽由外围设备或其他存储器映射装置接收的DMA任务请求和/或由FIFO 150的一个FIFO初始化的请求,或者可以将其提供给仲裁器410。
根据本发明的实施例,附加的通道逻辑448可以通过检验在计数器达到预定值之前DMA任务是否完成了,来检测可能的计时冲突(并发送可能的计时冲突信号),其中该预定值指示DMA任务执行子间隔已经过去。DMA任务执行子间隔可以被包括在缓冲器文件200或缓冲器描述符内。可以向装置90的各个组件包括核心92,或DMA控制器100的另一部分,发送该信号。
附加的通道逻辑448可以接收来自于选定的DMA通道逻辑420或来自缓冲器描述符的指示,它指示该DMA任务完成。
选定的DMA通道逻辑460管理选定的DMA任务或子任务。它访问选定的DMA任务的缓冲器描述符,并执行多种操作,例如地址计算,确定何时结束DMA任务或DMA任务,判定何时执行缓冲器间的跳转等。
选定的DMA通道逻辑460包括至少一个进程计数器462。一旦DMA任务开始,就为进程计数器462加载基本地址,并在完成这一DMA事务处理时,将进程计数器462减去要在DMA任务或DMA子任务期间利用DMA事务处理大小传输的数据的剩余大小。一旦DMA任务或DMA子任务结束,就把更新的缓冲器描述符发送回PRAM 130和存储器单元94。
方便地,在管理多维缓冲器时,为了计算每一个维度的重复,应当使用多个计数器。
选定的DMA通道逻辑460还包括地址计算单元464,它接收各个地址,并利用这些地址来访问缓冲器的选定条目(entry)(由缓冲器描述符指示的),执行跳转操作等。
图8示出了根据本发明实施例的在示范性数据传输操作中涉及的各个缓冲器70、71、72、73、75和75。
缓冲器71和72存储源图像,而寄存器72和73存储参考图像。在通过编码和/或压缩处理源图像时,需要来自于这两图像的数据。
缓冲器70和71是源缓冲器,缓冲器72和73是参考缓冲器,而缓冲器74和75是目的缓冲器。缓冲器71和72中的每一个都是三维缓冲器。
缓冲器71的第一维度包括用S1表示的存储器段。缓冲器71的第二维度包括存储器段S1和S2。缓冲器71的第三维度包括用S1-S50来表示的50个存储器段。
缓冲器72的第一维度包括用S51表示的存储器段。缓冲器72的第二维度包括存储器段S51和S52。缓冲器72的第三维度包括用S51-S100来表示的50个存储器段。
缓冲器73的第一维度包括用R1来表示的存储器段。缓冲器73的第二维度包括存储器段R1和R2。缓冲器73的第三维度包括用R1-R50来表示的50个存储器段。
缓冲器74的第一维度包括用R51来表示的存储器段。缓冲器74的第二维度包括存储器段R51和R52。缓冲器74的第三维度包括用R51-R100来表示的50个存储器段。
每当DMA控制器100完成对每一缓冲器的第二维度的读取时,它就执行缓冲器间的跳转。因此,在48个跳转之后,它完成对缓冲器71和72的读取。
缓冲器间的跳转的结果是,缓冲器以易于对视频帧的处理的方式存储图像数据。因此,寄存器74存储以下存储器段:S1、S2、S51、S52、S3、S4、S53、S54...S100,而寄存器75存储以下存储器段:R1、R2、R51、R52、R3、R4、R53、R54...R100。
以下的附图是根据本发明各个实施例的各种方法的流程图。方便地,由本发明的系统90来执行这些方法。仅仅是为了便于解释而提供了系统90以及尤其是DMA控制器90的各个组件作为参考。本领域技术人员还能够基于在此的描述而将方法应用到其他系统上。
方便地,可以组合各种方法的步骤,可以通过应用另一种方法的一个或多个步骤来执行特定的方法的步骤。在以下的描述中具体地描述了这些组合中的某些组合,但是这仅仅是为了便于进行解释。
图9是一种根据本发明实施例在多个DMA任务请求之间进行仲裁的方法500的流程图。
方法500由可选的步骤505开始,该步骤505定义了计时期限范围。该计时期限范围可以彼此相等,但这不是必需的。发明人使用了四个长度不同的计时期限范围。
在步骤505后面有步骤510,该步骤510接收多个DMA任务请求。方便地,在通道逻辑与仲裁器110上从使能的DMA通道接收这些DMA任务请求。在仲裁周期内可以对这些请求进行采样。由DMA通道BDT内预定的缓冲器描述符来描述每一个DMA任务请求。
在步骤510后面有步骤520,该步骤520响应于与DMA任务相关的计时期限而从多个DMA任务请求当中选择DMA任务请求。该选择可以由仲裁器410施行。
根据本发明的实施例,步骤520包括响应于预定的优先级而在与基本上相同的计时期限相关的DMA任务请求之间进行选择。该优先级可以是固定的或者能够动态变化。
根据本发明的实施例,该选择可以包括应用计时期限无差异仲裁方案。
方便地,步骤520响应于至少一个可用带宽参数和/或响应于至少一个请求的带宽参数。
方便地,至少一个DMA任务是重复性任务,甚至是基于周期时间的DMA任务。
根据本发明的实施例,步骤520包括在与属于一个(或多个)计时期限范围的计时期限相关的多个DMA任务请求之间进行选择。方便地,方法500搜索非空且包括最短时间期限的范围。如果该范围包括多于一个的DMA任务请求,则方法500选择其中一个DMA任务请求。
方便地,每一个DMA任务请求都与特定的I/O端口相关。在这样一种情况下,该方法可以执行每一个端口的仲裁序列。可以并行执行不同的仲裁方案。
方便地,至少一个DMA任务涉及从(或向)多维缓冲器检索信息。
方便地,方法500进一步包括监视DMA任务的执行。方便地,方法500包括步骤530,它响应于计时期限冲突而生成中断请求。注意,可以在该DMA任务的执行期间应用方法600、700和/或800的各个步骤。
注意,方法500可以包括选择另一种仲裁方案的步骤(未显示),例如计时期限无差异仲裁方案。
图10是根据本发明实施例用于控制第一DMA任务的执行的方法600的流程图。
根据本发明的实施例,通过一旦成功地完成DMA任务则不生成中断请求来减少核心加载。
方法600由步骤610开始,该步骤610定义了第一DMA任务执行间隔和第一DMA任务执行子间隔。方便地,在一个或多个缓冲器描述符内存储这些定义。
在步骤610后面有步骤620,该步骤620在多个DMA任务请求之间选择该第一DMA任务请求,其中该选择响应于第一DMA请求的优先级。该选择可以包括应用方法500的一个或多个步骤。
在步骤620后面有步骤650,该步骤650监视第一DMA任务的执行。
在步骤650后面有步骤660:如果在第一DMA任务执行子间隔期间没有完成该第一DMA任务,则执行第一可能的计时冲突响应操作。
根据本发明的各个实施例,可以将方法600应用到多个DMA任务。比如说,方法600可以包括定义第二DMA任务执行间隔和第二DMA任务执行子间隔,监视第二DMA任务的执行,以及在第二DMA任务执行子间隔期间没有完成该第二DMA任务的情况下,执行第二可能的计时冲突响应操作。
根据本发明的实施例,第一DMA认为是基于周期时间的DMA任务。一旦检测到可能的计时冲突,就可以改变在未来的DMA任务间隔期间DMA任务的执行。
根据本发明的各个实施例,步骤660可以包括以下步骤中任意一个步骤或一个或多个步骤的组合:(i)生成中断请求;(ii)停止DMA任务;(iii)改变第一DMA任务请求的优先级;(iv)允许在单独的第一DMA任务执行间隔内执行多个第一DMA任务;(v)迫使完成DMA任务;(vi)迫使完成DMA子任务。
参照之前附图所示的DMA控制器100,DMA控制器100可以旁路仲裁器,或者要不然就暂时冻结其他DMA请求并使得重新向I/O端口接口提供该DMA任务请求。
根据本发明的实施例,可能的计时冲突响应操作响应于导致可能的计时冲突的DMA任务进程和/或响应于DMA任务的优先级。比如说,如果DMA任务几乎完成了(和/或具有高优先级),则该方法将倾向于完成该DMA任务而不停止它。
图11是根据本发明实施例用于执行DMA任务的方法700的流程图。
方法700由步骤710开始,该步骤710将缓冲器间的跳变点定义在多个多维缓冲器当中的每一个多维缓冲器的一个或多个维度的末端点上。
在步骤710后面有步骤750,该步骤750接收执行DMA任务的请求。
在步骤750后面有步骤770,该步骤770执行多个DMA子任务,其中所述执行包括在缓冲器间的跳变点上在缓冲器之间跳转。
方便地,步骤770包括在至少一个缓冲器间的跳变点中判断是否继续执行DMA任务。因此,响应于该判断,方法700可以继续执行DMA任务,放弃该任务,或者甚至是重新执行至少一个DMA子任务。
根据本发明各个实施例,该判断可以(i)响应于在该判断之前执行的DMA子任务的成功;(ii)响应于在该判断之前执行的至少一个DMA子任务期间检索的数据的内容,等等。
方便地,方法700包括在判断期间冻结至少一个DMA通道。
方便地,该DMA任务是基于时间的周期性DMA任务。
方便地,该DMA任务包括从一个多维缓冲器向多个单维缓冲器写数据。
方便地,方法700包括执行与多个多维缓冲器中每一个多维缓冲器的特定维度相关的DMA子任务,然后执行与该多个多维缓冲器中每一个多维缓冲器的另一个维度相关的DMA子任务。
方便地,一旦选择相应的DMA任务请求,就执行该DMA任务。该选择可以响应于DMA任务的优先级。方便地,与多个多维缓冲器相关的DMA任务的优先级响应于这些多维缓冲器中的至少一个的优先级。
图12是根据本发明实施例用于控制多个DMA任务的方法800的流程图。
方法800由步骤810开始,该步骤810为多个DMA通道中的每一个通道定义了多个缓冲器描述符;其中至少两个缓冲器描述符包括计时信息,该计时信息控制基于周期时间的DMA任务的执行。在图5中示例了缓冲器描述符内所包括的各种信息的实例。
方便地,计时信息定义了DMA任务执行间隔和DMA任务优先级。可由诸如方法600的方法来使用这些字段。方便地,至少一个缓冲器描述符包括当前循环I/O端口选择信息和下一个循环I/O端口选择信息。如果DMA控制器(例如DMA控制器100)包括多个I/O端口,则这些字段定义在当前DMA任务、DMA子任务和/或DMA事务处理期间应当使用的I/O端口,以及在下一DMA任务、DMA子任务和/或DMA事务处理期间应当使用的I/O端口。方便地,至少一个缓冲器描述符包括仲裁类型信息。因此,鉴于该字段,DMA控制器可以选择仲裁方法,诸如,但不局限于,方法500的仲裁方案。
在步骤810后面有步骤850,该步骤850接收多个DMA任务请求。
在步骤850后面有步骤860,该步骤860从该多个DMA任务请求当中选择DMA任务请求。该选择可以包括方法500的任意步骤。
在步骤860后面有步骤870,该步骤870执行DAM任务或DMA任务循环,并更新与选定的DMA任务请求相关的缓冲器描述符,以反映该执行。在步骤870后面有步骤860。
方便地,在步骤870后面有步骤880:一旦检测到可能的计时冲突则生成中断请求。在步骤880和可能的计时冲突操作后面有步骤860。
注意,可以在方法800的执行期间更新缓冲器描述符,尽管为了便于解释而没有在图11中示出该更新步骤。
方便地,在连接到DMA控制器的存储器单元内存储至少一个缓冲器描述符,而且基于周期时间的DMA任务的第一循环的执行包括:从该存储器单元检索与该基于周期时间的DMA任务相关的缓冲器描述符。
方便地,至少一个基于周期时间的DMA任务包括多个与多维缓冲器相关的DMA子任务。方便地,方法800包括在不同的DMA任务循环期间使用不同的I/O端口。
本领域普通技术人员在不脱离所请求保护的本发明的精神和范围的情况下将会想到对此处所描述内容的变形、修改和其他执行方式。因此,本发明并不由之前的示范性描述所限定,而是由以下权利要求的精神和范围所限定。
权利要求书(按照条约第19条的修改)
1.一种用于控制第一DMA任务的执行的方法(600),所述方法包括监视所述第一DMA任务的执行(650),
所述方法(600)特征在于,包括定义第一DMA任务执行间隔和第一DMA任务执行子间隔(610);其中所述第一DMA任务执行间隔包括所述第一DMA任务执行子间隔;以及如果在所述第一DMA任务执行子间隔期间未完成所述第一DMA任务,则执行第一可能的计时冲突响应操作(660)。
2.根据权利要求1所述的方法(600),其中所述执行(660)进一步包括:如果在第二DMA任务执行子间隔期间未完成第二DMA任务,则执行第二可能的计时冲突响应操作。
3.根据权利要求1-2中任一项所述的方法(600),其中所述第一DMA任务是基于周期时间的DMA任务。
4.根据权利要求1-3中任一项所述的方法(600),其中所述第一计时冲突响应操作包括生成中断请求。
5.根据权利要求1-4中任一项所述的方法(600),其中所述第一计时冲突响应操作包括停止所述DMA任务。
6.根据权利要求1-5中任一项所述的方法(600),进一步包括在多个DMA任务请求选择第一DMA任务请求(620);其中所述选择响应于所述第一DMA请求的优先级;以及其中第一计时冲突响应操作包括改变所述第一DMA任务请求的优先级。
7.根据权利要求1-6中任一项所述的方法(600),其中所述第一DMA任务是基于时间的DMA任务,以及其中所述第一计时冲突响应操作包括允许在单个第一DMA任务执行间隔内执行多个第一DMA任务。
8.根据权利要求1-7中任一项所述的方法(600),其中所述第一计时冲突响应操作包括迫使完成所述DMA任务。
9.根据权利要求1-8中任一项所述的方法(600),其中至少一个DMA任务包括多个DMA子任务,以及其中每个DMA子任务包括访问多维缓冲器的不同的维度。
10.根据权利要求1-9中任一项所述的方法(600),其中所述第一个计时冲突响应操作包括迫使完成DMA子任务。
11.一种具有第一DMA任务控制性能的装置(90),所述装置包括存储器单元(94);其特征在于
包括DMA控制器(100),该DMA控制器(100)适用来监视第一DMA任务的执行,其包括访问所述存储器单元(94),以及适于如果在第一DMA任务执行子间隔期间未完成所述第一DMA任务的情况下执行第一可能的计时冲突响应操作;其中所述第一DMA任务执行间隔包括所述第一DMA任务执行子间隔。
12.根据权利要求11所述的装置(90),其中该装置进一步适用来如果在第二DMA任务执行子间隔期间未完成第二DMA任务的情况下执行第二可能的计时冲突响应操作。
13.根据权利要求11-12中任一项所述的装置(90),其中所述第一DMA任务是基于周期时间的DMA任务。
14.根据权利要求11-13中任一项所述的装置(90),其中所述第一计时冲突响应操作包括生成中断请求。
15.根据权利要求11-14中任一项所述的装置(90),其中所述第一计时冲突响应操作包括停止所述DMA任务。
16.根据权利要求11-15中任一项所述的装置(90),该装置进一步适用来在多个DMA任务请求之间选择第一DMA任务请求,其中所述选择响应于所述第一DMA请求的优先级;以及其中第一计时冲突响应操作包括改变所述第一DMA任务请求的优先级。
17.根据权利要求11-16中任一项所述的装置(90),其中所述第一DMA任务是基于时间的DMA任务,以及其中所述第一计时冲突响应操作包括允许在单个第一DMA任务执行间隔内执行多个第一DMA任务。
18.根据权利要求11-17中任一项所述的装置(90),其中所述第一计时冲突响应操作包括迫使完成所述DMA任务。
19.根据权利要求11-18中任一项所述的装置(90),其中至少一个DMA任务包括多个DMA子任务,而且其中每个DMA子任务包括访问多维缓冲器的不同的维度。
Claims (20)
1.一种用于控制第一DMA任务的执行的方法(600),所述方法包括监视所述第一DMA任务的执行(650),
所述方法(600)特征在于,定义第一DMA任务执行间隔和第一DMA任务执行子间隔(610);以及如果在所述第一DMA任务执行子间隔期间未完成所述第一DMA任务,则执行第一可能的计时冲突响应操作(660)。
2.根据权利要求1所述的方法(600),其中所述执行(660)进一步包括:如果在第二DMA任务执行子间隔期间未完成第二DMA任务,则执行第二可能的计时冲突响应操作。
3.根据权利要求1-2中任一项所述的方法(600),其中所述第一DMA任务是基于周期时间的DMA任务。
4.根据权利要求1-3中任一项所述的方法(600),其中所述第一计时冲突响应操作包括生成中断请求。
5.根据权利要求1-4中任一项所述的方法(600),其中所述第一计时冲突响应操作包括停止所述DMA任务。
6.根据权利要求1-5中任一项所述的方法(600),进一步包括在多个DMA任务请求之间选择第一DMA任务请求,其中所述选择响应于所述第一DMA请求的优先级;以及其中第一计时冲突响应操作包括改变所述第一DMA任务请求的优先级。
7.根据权利要求1-6中任一项所述的方法(600),其中所述第一DMA任务是基于时间的DMA任务,以及其中所述第一计时冲突响应操作包括允许在单一的第一DMA任务执行间隔内执行多个第一DMA任务。
8.根据权利要求1-7中任一项所述的方法(600),其中所述第一计时冲突响应操作包括迫使完成所述DMA任务。
9.根据权利要求1-8中任一项所述的方法(600),其中至少一个DMA任务包括多个DMA子任务,以及其中每一个DMA子任务包括访问多维缓冲器的不同的维度。
10.根据权利要求1-9中任一项所述的方法(600),其中所述第一个计时冲突响应操作包括迫使完成DMA子任务。
11.一种具有第一DMA任务控制性能的装置(90),所述装置包括存储器单元(94);其特征在于
包括DMA控制器(100),该DMA控制器(100)适用来监视所述第一DMA任务的执行,其包括访问所述存储器单元(94),以及适于如果在第一DMA任务执行子间隔期间未完成所述第一DMA任务的情况下执行第一可能的计时冲突响应操作。
12.根据权利要求11所述的装置(90),其中所述装置进一步适用来在第二DMA任务执行子间隔期间未完成第二DMA任务的情况下执行第二可能的计时冲突响应操作。
13.根据权利要求11-12中任一项所述的装置(90),其中所述第一DMA任务是基于周期时间的DMA任务。
14.根据权利要求11-13中任一项所述的装置(90),其中所述第一计时冲突响应操作包括生成中断请求。
15.根据权利要求11-14中任一项所述的装置(90),其中所述第一计时冲突响应操作包括停止DMA任务。
16.根据权利要求11-15中任一项所述的装置(90),所述装置进一步适用来在多个DMA任务请求之间选择第一DMA任务请求,其中所述选择响应于所述第一DMA请求的优先级;以及其中第一计时冲突响应操作包括改变所述第一DMA任务请求的优先级。
17.根据权利要求11-16中任一项所述的装置(90),其中所述第一DMA任务是基于时间的DMA任务,以及其中所述第一计时冲突响应操作包括允许在单一的第一DMA任务执行间隔内执行多个第一DMA任务。
18.根据权利要求11-17中任一项所述的装置(90),其中所述第一计时冲突响应操作包括迫使完成所述DMA任务。
19.根据权利要求11-18中任一项所述的装置(90),其中至少一个DMA任务包括多个DMA子任务,而且其中每个DMA子任务包括访问多维缓冲器的不同的维度。
20.根据权利要求11-19中任一项所述的装置(90),其中所述第一计时冲突响应操作包括迫使完成DMA子任务。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/IB2005/052175 WO2007003986A1 (en) | 2005-06-30 | 2005-06-30 | Device and method for controlling an execution of a dma task |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101218569A true CN101218569A (zh) | 2008-07-09 |
CN101218569B CN101218569B (zh) | 2011-07-13 |
Family
ID=35169238
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005800509631A Expired - Fee Related CN101218569B (zh) | 2005-06-30 | 2005-06-30 | 用于控制dma任务的执行的装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8001430B2 (zh) |
EP (1) | EP1899826B1 (zh) |
JP (1) | JP2009510543A (zh) |
CN (1) | CN101218569B (zh) |
DE (1) | DE602005027003D1 (zh) |
WO (1) | WO2007003986A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678199A (zh) * | 2012-09-26 | 2014-03-26 | 深圳市中兴微电子技术有限公司 | 一种传输数据的方法和设备 |
CN110178344A (zh) * | 2017-02-07 | 2019-08-27 | 欧姆龙株式会社 | 控制装置以及通信装置 |
CN111126589A (zh) * | 2019-12-31 | 2020-05-08 | 北京百度网讯科技有限公司 | 神经网络数据处理装置、方法和电子设备 |
CN113778694A (zh) * | 2021-11-12 | 2021-12-10 | 苏州浪潮智能科技有限公司 | 一种任务处理方法、装置、设备及介质 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090125647A1 (en) * | 2005-06-30 | 2009-05-14 | Citibank, N.A. | Device And Method For Executing A DMA Task |
DE602005015632D1 (de) | 2005-06-30 | 2009-09-03 | Freescale Semiconductor Inc | Einrichtung und verfahren zur steuerung mehrerer dma-tasks |
JP4598858B2 (ja) * | 2005-06-30 | 2010-12-15 | フリースケール セミコンダクター インコーポレイテッド | ダイレクトメモリアクセスタスク要求のアービトレーションを行うためのデバイスおよび方法 |
WO2010017263A1 (en) * | 2008-08-06 | 2010-02-11 | Sandbridge Technologies, Inc. | Haltable and restartable dma engine |
GB0814484D0 (en) * | 2008-08-07 | 2008-09-10 | Icera Inc | Dma engine |
US9152483B2 (en) * | 2009-01-16 | 2015-10-06 | F5 Networks, Inc. | Network devices with multiple fully isolated and independently resettable direct memory access channels and methods thereof |
US8286027B2 (en) * | 2010-05-25 | 2012-10-09 | Oracle International Corporation | Input/output device including a mechanism for accelerated error handling in multiple processor and multi-function systems |
US8250253B2 (en) * | 2010-06-23 | 2012-08-21 | Intel Corporation | Method, apparatus and system for reduced channel starvation in a DMA engine |
US8332546B2 (en) * | 2010-07-20 | 2012-12-11 | Lsi Corporation | Fully asynchronous direct memory access controller and processor work |
US8935329B2 (en) * | 2012-01-11 | 2015-01-13 | International Business Machines Corporation | Managing message transmission and reception |
US8966132B2 (en) | 2012-11-16 | 2015-02-24 | International Business Machines Corporation | Determining a mapping mode for a DMA data transfer |
JP2014209312A (ja) * | 2013-03-25 | 2014-11-06 | 株式会社東芝 | 集積回路 |
US8984179B1 (en) | 2013-11-15 | 2015-03-17 | International Business Machines Corporation | Determining a direct memory access data transfer mode |
FR3019339B1 (fr) * | 2014-03-25 | 2016-04-01 | Commissariat Energie Atomique | Procede de transfert de donnees entre taches temps reel utilisant un controleur memoire dma |
EP3001322B1 (en) * | 2014-09-29 | 2018-08-08 | F5 Networks, Inc | Network devices with multiple fully isolated and independently resetable direct memory access channels and methods thereof |
DE102016211386A1 (de) * | 2016-06-14 | 2017-12-14 | Robert Bosch Gmbh | Verfahren zum Betreiben einer Recheneinheit |
US11855898B1 (en) | 2018-03-14 | 2023-12-26 | F5, Inc. | Methods for traffic dependent direct memory access optimization and devices thereof |
Family Cites Families (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4556952A (en) | 1981-08-12 | 1985-12-03 | International Business Machines Corporation | Refresh circuit for dynamic memory of a data processor employing a direct memory access controller |
JPS6052468B2 (ja) | 1982-03-04 | 1985-11-19 | 株式会社東芝 | Dmaバス負荷可変装置 |
US4837677A (en) | 1985-06-14 | 1989-06-06 | International Business Machines Corporation | Multiple port service expansion adapter for a communications controller |
US4637015A (en) | 1985-07-29 | 1987-01-13 | Northern Telecom Limited | Packet transmission and reception via a shared DMA channel |
US4954948A (en) * | 1986-12-29 | 1990-09-04 | Motorola, Inc. | Microprocessor operating system for sequentially executing subtasks |
JPH0248757A (ja) | 1988-08-10 | 1990-02-19 | Fujitsu Ltd | データ通信方式 |
JP2624388B2 (ja) | 1991-04-24 | 1997-06-25 | 松下電子工業株式会社 | Dma装置 |
JPH04324755A (ja) | 1991-04-25 | 1992-11-13 | Canon Inc | ファクシミリ装置 |
US5485613A (en) * | 1991-08-27 | 1996-01-16 | At&T Corp. | Method for automatic memory reclamation for object-oriented systems with real-time constraints |
JP2826244B2 (ja) | 1992-12-17 | 1998-11-18 | シャープ株式会社 | Dmaユニット |
US6026443A (en) * | 1992-12-22 | 2000-02-15 | Sun Microsystems, Inc. | Multi-virtual DMA channels, multi-bandwidth groups, host based cellification and reassembly, and asynchronous transfer mode network interface |
US5450551A (en) | 1993-05-28 | 1995-09-12 | International Business Machines Corporation | System direct memory access (DMA) support logic for PCI based computer system |
EP0654743A1 (en) * | 1993-11-19 | 1995-05-24 | International Business Machines Corporation | Computer system having a DSP local bus |
US5506969A (en) | 1993-11-29 | 1996-04-09 | Sun Microsystems, Inc. | Method and apparatus for bus bandwidth management |
JPH07168741A (ja) | 1993-12-15 | 1995-07-04 | Toshiba Corp | ウォッチドッグタイマ装置 |
US5628026A (en) * | 1994-12-05 | 1997-05-06 | Motorola, Inc. | Multi-dimensional data transfer in a data processing system and method therefor |
US5603050A (en) | 1995-03-03 | 1997-02-11 | Compaq Computer Corporation | Direct memory access controller having programmable timing |
JPH08249267A (ja) | 1995-03-13 | 1996-09-27 | Matsushita Electric Ind Co Ltd | Dmaコントローラ |
US5864712A (en) | 1995-03-17 | 1999-01-26 | Lsi Logic Corporation | Method and apparatus for controlling (N+I) I/O channels with (N) data managers in a homogenous software programmable environment |
US5774680A (en) | 1995-12-11 | 1998-06-30 | Compaq Computer Corporation | Interfacing direct memory access devices to a non-ISA bus |
US6041060A (en) | 1997-04-30 | 2000-03-21 | International Business Machines Corporation | Communications cell scheduler and scheduling method for providing periodic activities |
TW406229B (en) * | 1997-11-06 | 2000-09-21 | Hitachi Ltd | Data process system and microcomputer |
US6122679A (en) | 1998-03-13 | 2000-09-19 | Compaq Computer Corporation | Master DMA controller with re-map engine for only spawning programming cycles to slave DMA controllers which do not match current programming cycle |
US6298396B1 (en) | 1998-06-01 | 2001-10-02 | Advanced Micro Devices, Inc. | System for loading a current buffer desciptor register with a value different from current value to cause a previously read buffer descriptor to be read again |
US6449664B1 (en) | 1998-11-16 | 2002-09-10 | Viewahead Technology, Inc. | Two dimensional direct memory access in image processing systems |
DE69924475T2 (de) | 1999-06-09 | 2006-02-16 | Texas Instruments Inc., Dallas | Multikanal-DMA mit Datenverkehrplanung auf die Ausgänge |
US6542940B1 (en) | 1999-10-25 | 2003-04-01 | Motorola, Inc. | Method and apparatus for controlling task execution in a direct memory access controller |
TW453069B (en) * | 2000-01-05 | 2001-09-01 | Via Tech Inc | Packet accessing method with parallel multiplexing feature |
US6728795B1 (en) | 2000-04-17 | 2004-04-27 | Skyworks Solutions, Inc. | DMA channel for high-speed asynchronous data transfer |
JP2002073527A (ja) | 2000-08-25 | 2002-03-12 | Rohm Co Ltd | Dmaコントローラ |
US6874039B2 (en) * | 2000-09-08 | 2005-03-29 | Intel Corporation | Method and apparatus for distributed direct memory access for systems on chip |
US6883037B2 (en) * | 2001-03-21 | 2005-04-19 | Microsoft Corporation | Fast data decoder that operates with reduced output buffer bounds checking |
US6741603B2 (en) * | 2001-07-09 | 2004-05-25 | Overture Networks, Inc. | Use of a circular buffer to assure in-order delivery of packets |
JP2003141057A (ja) | 2001-11-06 | 2003-05-16 | Mitsubishi Electric Corp | Dma転送制御回路 |
US6909408B2 (en) * | 2001-12-20 | 2005-06-21 | Bendix Commercial Vehicle Systems Llc | Mounting assembly for night vision display unit |
US6922741B2 (en) | 2002-02-01 | 2005-07-26 | Intel Corporation | Method and system for monitoring DMA status |
JP2004013395A (ja) | 2002-06-05 | 2004-01-15 | Denso Corp | Dmaコントローラ |
US7256795B2 (en) | 2002-07-31 | 2007-08-14 | Ati Technologies Inc. | Extended power management via frame modulation control |
JP2004086451A (ja) | 2002-08-26 | 2004-03-18 | Matsushita Electric Ind Co Ltd | 半導体集積回路 |
US20040073721A1 (en) | 2002-10-10 | 2004-04-15 | Koninklijke Philips Electronics N.V. | DMA Controller for USB and like applications |
US6874054B2 (en) * | 2002-12-19 | 2005-03-29 | Emulex Design & Manufacturing Corporation | Direct memory access controller system with message-based programming |
JP2004252533A (ja) | 2003-02-18 | 2004-09-09 | Matsushita Electric Ind Co Ltd | Dmaコントロール回路 |
WO2004086240A1 (en) | 2003-03-28 | 2004-10-07 | Koninklijke Philips Electronics N.V. | Data processing system with a dma controller for storing the descriptor of the active channel |
US20040216018A1 (en) * | 2003-04-28 | 2004-10-28 | Cheung Kam Tim | Direct memory access controller and method |
KR100524763B1 (ko) * | 2003-07-23 | 2005-10-31 | 엘지전자 주식회사 | 개선된 edf 스케쥴링 방법 |
US7043518B2 (en) | 2003-07-31 | 2006-05-09 | Cradle Technologies, Inc. | Method and system for performing parallel integer multiply accumulate operations on packed data |
JP2005056067A (ja) | 2003-08-01 | 2005-03-03 | Matsushita Electric Ind Co Ltd | Dma転送制御装置 |
JP2005085079A (ja) | 2003-09-10 | 2005-03-31 | Matsushita Electric Ind Co Ltd | データ転送制御装置 |
JP2005158035A (ja) | 2003-11-05 | 2005-06-16 | Matsushita Electric Ind Co Ltd | 調停回路及びこれに備える機能処理回路 |
US7137033B2 (en) * | 2003-11-20 | 2006-11-14 | International Business Machines Corporation | Method, system, and program for synchronizing subtasks using sequence numbers |
US7346716B2 (en) * | 2003-11-25 | 2008-03-18 | Intel Corporation | Tracking progress of data streamer |
US7324541B2 (en) * | 2003-12-22 | 2008-01-29 | Intel Corporation | Switching device utilizing internal priority assignments |
US6920586B1 (en) * | 2004-01-23 | 2005-07-19 | Freescale Semiconductor, Inc. | Real-time debug support for a DMA device and method thereof |
US7735093B2 (en) * | 2004-03-02 | 2010-06-08 | Qualcomm Incorporated | Method and apparatus for processing real-time command information |
US7813369B2 (en) * | 2004-08-30 | 2010-10-12 | International Business Machines Corporation | Half RDMA and half FIFO operations |
US7620057B1 (en) | 2004-10-19 | 2009-11-17 | Broadcom Corporation | Cache line replacement with zero latency |
DE602005015632D1 (de) | 2005-06-30 | 2009-09-03 | Freescale Semiconductor Inc | Einrichtung und verfahren zur steuerung mehrerer dma-tasks |
GB2427630B (en) | 2005-06-30 | 2007-11-07 | Schlumberger Holdings | Methods and materials for zonal isolation |
JP4598858B2 (ja) * | 2005-06-30 | 2010-12-15 | フリースケール セミコンダクター インコーポレイテッド | ダイレクトメモリアクセスタスク要求のアービトレーションを行うためのデバイスおよび方法 |
US20090125647A1 (en) * | 2005-06-30 | 2009-05-14 | Citibank, N.A. | Device And Method For Executing A DMA Task |
-
2005
- 2005-06-30 DE DE602005027003T patent/DE602005027003D1/de active Active
- 2005-06-30 WO PCT/IB2005/052175 patent/WO2007003986A1/en active Application Filing
- 2005-06-30 JP JP2008518991A patent/JP2009510543A/ja active Pending
- 2005-06-30 EP EP05758472A patent/EP1899826B1/en not_active Not-in-force
- 2005-06-30 US US11/994,276 patent/US8001430B2/en not_active Expired - Fee Related
- 2005-06-30 CN CN2005800509631A patent/CN101218569B/zh not_active Expired - Fee Related
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678199A (zh) * | 2012-09-26 | 2014-03-26 | 深圳市中兴微电子技术有限公司 | 一种传输数据的方法和设备 |
WO2014048349A1 (zh) * | 2012-09-26 | 2014-04-03 | 中兴通讯股份有限公司 | 一种传输数据的方法和设备 |
CN103678199B (zh) * | 2012-09-26 | 2017-05-10 | 深圳市中兴微电子技术有限公司 | 一种传输数据的方法和设备 |
US9697153B2 (en) | 2012-09-26 | 2017-07-04 | Zte Corporation | Data transmission method for improving DMA and data transmission efficiency based on priorities of at least two arbitration units for each DMA channel |
CN110178344A (zh) * | 2017-02-07 | 2019-08-27 | 欧姆龙株式会社 | 控制装置以及通信装置 |
CN111126589A (zh) * | 2019-12-31 | 2020-05-08 | 北京百度网讯科技有限公司 | 神经网络数据处理装置、方法和电子设备 |
US11269529B2 (en) | 2019-12-31 | 2022-03-08 | Kunlunxin Technology (Beijing) Company Limited | Neural network data processing apparatus, method and electronic device |
CN113778694A (zh) * | 2021-11-12 | 2021-12-10 | 苏州浪潮智能科技有限公司 | 一种任务处理方法、装置、设备及介质 |
CN113778694B (zh) * | 2021-11-12 | 2022-02-18 | 苏州浪潮智能科技有限公司 | 一种任务处理方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
EP1899826B1 (en) | 2011-03-16 |
EP1899826A1 (en) | 2008-03-19 |
US8001430B2 (en) | 2011-08-16 |
JP2009510543A (ja) | 2009-03-12 |
WO2007003986A1 (en) | 2007-01-11 |
US20090144589A1 (en) | 2009-06-04 |
CN101218569B (zh) | 2011-07-13 |
DE602005027003D1 (de) | 2011-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101218570B (zh) | 在直接存储器存取任务请求之间进行仲裁的装置和方法 | |
CN101218569B (zh) | 用于控制dma任务的执行的装置 | |
US7930444B2 (en) | Device and method for controlling multiple DMA tasks | |
US6895482B1 (en) | Reordering and flushing commands in a computer memory subsystem | |
US8327057B1 (en) | Ordering write bursts to memory | |
US6401149B1 (en) | Methods for context switching within a disk controller | |
US7802040B2 (en) | Arbitration method reordering transactions to ensure quality of service specified by each transaction | |
US20080209084A1 (en) | Hardware-Based Concurrent Direct Memory Access (DMA) Engines On Serial Rapid Input/Output SRIO Interface | |
EP1024432A2 (en) | Performance counter for monitoring multiple events | |
US20160062930A1 (en) | Bus master, bus system, and bus control method | |
US20080126641A1 (en) | Methods and Apparatus for Combining Commands Prior to Issuing the Commands on a Bus | |
CN102375800A (zh) | 用于机器视觉算法的多处理器片上系统 | |
WO2004109432A2 (en) | Method and apparatus for local and distributed data memory access ('dma') control | |
JP7195486B1 (ja) | 異種メモリシステムに対するシグナリング | |
EP1899827B1 (en) | Device and method for executing a dma task | |
US8166246B2 (en) | Chaining multiple smaller store queue entries for more efficient store queue usage | |
US7774513B2 (en) | DMA circuit and computer system | |
US20110320729A1 (en) | Cache bank modeling with variable access and busy times | |
WO2007088426A1 (en) | Device and method for accessing dynamic memory units | |
WO2013184855A1 (en) | Memory with bank-conflict-resolution (bcr) module including cache | |
RU2643622C1 (ru) | Вычислительный модуль | |
KR20140058455A (ko) | 메모리 제어장치 및 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체 | |
NZ716954A (en) | Computing architecture with peripherals | |
KR20070020391A (ko) | 스트리밍 id 방법에 의한 dmac 발행 메커니즘 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20080709 |
|
CI01 | Publication of corrected invention patent application |
Correction item: Rejection of patent application Correct: Dismiss False: Reject Number: 32 Volume: 26 |
|
ERR | Gazette correction |
Free format text: CORRECT: PATENT APPLICATION REJECTION OF AFTER PUBLICATION; FROM: REJECTION TO: REVOCATION REJECTED |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110713 Termination date: 20200630 |