CN103914416B - 调节直接存储器存取描述符的执行 - Google Patents
调节直接存储器存取描述符的执行 Download PDFInfo
- Publication number
- CN103914416B CN103914416B CN201310750275.2A CN201310750275A CN103914416B CN 103914416 B CN103914416 B CN 103914416B CN 201310750275 A CN201310750275 A CN 201310750275A CN 103914416 B CN103914416 B CN 103914416B
- Authority
- CN
- China
- Prior art keywords
- descriptor
- dma
- memory access
- execution
- direct memory
- 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.)
- Active
Links
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)引擎。所述DMA引擎适于处理描述符以控制DMA通信。所述描述符包含指示与DMA通信相关联的通信端点的数据。所述DMA引擎适于使用包含在所述描述符的至少一个中的其他数据控制多个执行路径间的描述符执行的分支。
Description
技术领域
背景技术
用于计算机系统的系统存储器与外围组件之间的数据传输的一种方法是采用中央处理单元(CPU)作为传输媒介。例如,为了从系统存储器向外围组件传输数据,CPU可以通过发起适当的读操作,从系统存储器中检索数据,并发起适当的写操作,将检索到的数据存储在外围组件的存储器中。为了降低CPU开销,计算机系统可以使用直接存储器存取(direct memory access,DMA),其中,外围组件的DMA引擎直接存取系统存储器以传输数据。CPU通常对DMA引擎编程,以便设置传输参数,例如源地址和目的地址,以及要传输的字节数。
发明内容
在一个示例性实施例中,一种技术包括利用描述符的执行以控制直接存储器存取(DMA)通信,以及利用来自描述符的至少一个的数据控制多个执行路径间的描述符执行的分支(branching of descriptor execution)。
在另一个示例性实施例中,一种装置包括存储器,其用于存储控制直接存储器存取(DMA)通信的描述符。所述装置包括控制电路,其使用描述符的至少一个中的数据控制多个执行路径间的描述符执行的分支。
在另一个示例性实施例中,一种装置包括集成电路,其包括处理核和直接存储器存取(DMA)引擎。所述DMA引擎适于处理描述符以控制DMA通信。所述描述符包含指示与DMA通信相关联的通信端点的数据。DMA引擎适于使用包含在所述描述符的至少一个中的其他数据控制多个执行路径间的描述符执行的分支。
优点和其他期望的功能从下列附图、描述和实施例将变得显而易见。
附图说明
图1和7是根据一个示例性实施例的基于微控制器单元(MCU)的系统的示意图。
图2是根据一个示例性实施例的图1的系统的MCU的示意图。
图3和6根据示例性实施例示出使用直接存储器存取(DMA)描述符控制多个DMA描述符执行路径间的分支。
图4根据一个示例性实施例示出一种调节用于DMA描述符执行的执行流的技术的流程图。
图5根据一个示例性实施例示出DMA描述符的示意图。
具体实施方式
建立给定的直接存储器存取(DMA)传输(或“循环”)的一种方法是,中央处理单元(CPU)使用传输参数如源和目标地址、被传输数据的大小以及与传输相关联的步幅(strides)对外围组件的DMA引擎的寄存器进行编程。建立DMA传输的另一种方法是为CPU将参数存储在被称为“DMA描述符”的存储器数据结构中。
一般来说,DMA描述符是由DMA引擎处理或执行的数据结构,以达到将参数编程到DMA引擎中的目的,从而用于相关的DMA传输。给定的DMA描述符可以进一步将DMA引擎引导或链接到由DMA引擎处理的下一个DMA描述符,以便一组DMA描述符可以被链接在一起,形成特定的DMA描述符执行流或路径。与寄存器编程相比,DMA描述符的具体优点是多个链接的DMA描述符可以被建立在存储器中,以便对DMA传输的对应序列编程。
本文公开的技术和系统使用包含在DMA描述符中的信息给予分支决定逻辑(例如,IF-THEN-ELSE逻辑),以便允许DMA引擎在多个潜在的DMA描述符执行路径之间选择,从而进一步潜在地降低CPU的参与。例如,利用本文所公开的DMA描述符信息,在执行给定的DMA描述符和评估潜在的分支条件后,DMA引擎可以选择:继续由相应的DMA描述符序列控制的重复DMA传输的“循环”;中断循环并变换到空闲状态;或中断循环并继续由另一个DMA描述符序列控制的替代DMA传输。换句话说,例如,DMA引擎可以评估循环结束时的条件值(IF条件值等于“x”),执行另一组DMA传输(IF条件值等于“x”,THEN执行其他描述符),或终止DMA描述符循环并变换到空闲状态(ELSE进入空闲状态)。
允许在DMA描述符执行流中做出分支决定对于降低CPU开销会是特别有利的,这是由于不然CPU可能参与应用程序执行,或可以在空闲状态掉电。例如,给定DMA描述符序列可以定义DMA传输序列,其重复特定次数以从分组无线电的无线接口传输数据。分支决定允许在循环中执行的重复DMA传输的一个序列和另一个DMA传输序列之间转换,其中,另一个DMA传输序列,例如,准备将分组无线电进入降低的功耗状态,而都不使用CPU来建立另一个DMA传输序列。
作为更具体的例子,图1示出在示例性系统10中的MCU 24。对于这个例子,MCU 24控制一个或更多个组件70的各个方面,以响应与组件70的通信。作为例子,根据特定应用,组件70可以包括下列中的一个或更多个:电机,家用电器,库存控制终端,计算机,平板机,智能功率表,无线接口,蜂窝接口,交互式触摸屏用户界面等等。MCU 24的全部或部分组件可以是集成电路(IC)或半导体封装30的部分。
如图1所示,根据示例性实施例,MCU 24包括DMA引擎152,其可以是MCU 24的外围组件(网络接口,无线接口,通用输入/输出(GPIO)接口,等等)的一部分。DMA引擎152执行DMA描述符,以达到在MCU24内建立和启动对应的DMA传输的目的。给定DMA传输可以是,例如,从包含DMA引擎152的外围组件的存储器到MCU 24的系统存储器的传输;从系统存储器到外围组件的存储器的传输;在系统存储器位置之间的传输;或外围到外围的传输。
参考图2,根据一些实施例,MCU 24的全部或一部分组件可以是集成电路(IC)30的部分。作为例子,MCU 24的全部或一部分组件可以被构造在单个芯片或多个芯片上。
在其组件中,MCU 24包括处理核150和包含DMA引擎152的示例性外围组件140。根据特定实施例,MCU 24可以不包含图2所示的任何组件,除了处理核150和外围组件140以外;可以包含除了处理核150和外围组件140以外的图2中所示的一个或更多个组件;可以包含不同于图2所示组件的其他和/或附加组件;等等。因此,可以考虑许多实施例,其都在所附权利要求的范围内。
作为一个例子,处理核150可以是32位核,例如高级RISC机器(ARM)处理核,其执行精减指令集计算机(RISC)指令集。一般来说,处理核150与MCU24的各个其他系统组件如存储器控制器,或管理器160,通过系统总线130通信。一般来说,存储器管理器160控制对MCU24的各个存储器组件如高速缓存172、非易失性存储器168(例如,闪存存储器)以及易失性存储器164(例如,静态随机存取存储器(SRAM))的存取。
需要指出的是,图2示出MCU架构的简化表示,这是由于根据进一步的实施例,MCU24可以具有未在图2中示出的许多其他组件、网桥(bridges)、总线等等。例如,根据一些实施例,MCU 24可以具有总线矩阵模块,其实施从属侧仲裁并被用于调节对MCU 24的存储器器件的存取。
根据一些实施例,MCU 24包括与I/O端子传输模拟和数字信号的模拟和数字组件90。所述模拟组件可以包括接收模拟信号的各种组件,例如模数变换器(ADC)和比较器;而且MCU 24可以包含提供模拟信号的模拟组件,例如电流驱动器。
MCU 24的数字组件可以与处理核150通过系统总线130通信。作为例子,所述数字组件可以包括通用串行总线(USB)接口、通用异步接收器/发送器(UART)、系统管理总线接口(SMB)、串行外设接口(SPI)等等。一般来说,这些数字组件经由I/O端子91与MCU 24外部的器件通信。根据示例性实施例,MCU 24包括多路复用器94,其用于可编程分配模拟和数字组件90的端子到MCU 24的I/O端子40和50。
如图2所示,根据一些实施例,待处理的DMA描述符100可以存储在易失性存储器164中。根据示例性实施例,DMA引擎152可以将这些待处理的DMA描述符100中的一个或更多个传输到引擎152的存储器中,供执行。需要指出的是,DMA引擎152可以从易失性存储器164检索DMA描述符100,虽然根据进一步的实施例,处理核150可以从易失性存储器164检索DMA描述符150并将DMA描述符100存储在DMA引擎的存储器中。
参考图3并结合图2,根据一个示例性实施例,DMA引擎152顺序执行DMA描述符100,该顺序由图3中的执行流160描述。对于这个具体例子,执行流160包括两个DMA描述符执行路径:定义N个DMA描述符100的执行序列(图3的例子中示出的DMA描述符100-1,100-2..100-N)的第一DMA描述符执行路径170;以及第二或替代DMA描述符执行路径172(在图3的例子中示出的示例性DMA描述符100-N+1...100-P)。在这种方式中,对于本文公开的具体例子,DMA引擎152首先重复执行对应于DMA描述符100-1到100-N以及DMA描述符执行路径170的一组DMA传输。
当结束循环条件满足时,DMA引擎152终止处理对应于DMA描述符执行路径170的DMA描述符,并开始处理对应于DMA执行流路径172的DMA描述符100-N+1到100-P。更为具体地,根据一个示例性实施例,由于信息包含在DMA描述符100-N中,每次DMA引擎152处理DMA描述符100-N时,DMA引擎152基于条件值评估IF-THEN-ELSE条件分支决定。例如,这个条件值可以是DMA引擎152已经重复DMA描述符执行路径170的次数,并且所述决定可以包括DMA引擎152测试这个次数,以便确定所述次数是否超出编程阀值。如果没有,DMA引擎152在循环的另一个迭代中处理DMA描述符100-N。否则,DMA引擎152可以,例如变换到空闲状态,或处理DMA描述符100-N+1,以变换到DMA描述符执行路径172。
根据示例性实施例,如图3中的示例性DMA描述符100-1所示,一般来说,描述符100包含四个字段(作为例子,四个一个字的字段),以指定相关联的DMA传输的参数并控制哪一个DMA描述符100,如果有的话,接下来被处理:控制字段162,其包含表示用于DMA传输的一个或更多个命令的数据;源字段164,其包含指定用于DMA传输的源地址的数据;目标字段166,其包含指定用于DMA传输的目标地址的数据;以及链接字段168,其一般包含控制使用到下一个DMA描述符100的顺序或非顺序链接的数据。如下所述,根据一个示例性实施例,控制字段162和链接字段166包含调节由DMA引擎152做出的条件分支和循环决定的数据。
作为一个更具体的例子,根据一个示例性实施例,控制字段162可以包含指定用于调节由DMA引擎152做出的条件分支和循环决定的目的下列参数的数据。循环计数器参数154指定循环计数值(这里被称为“LOOP_CNT[7:0]”),并由DMA引擎152使用以跟踪与DMA描述符100相关联的DMA传输被执行的迭代次数,假设循环使能参数156(具有被称为“LE”的值)允许发生循环。如果循环被允许(LE=EN),DMA引擎152可以,例如,递减LOOP_CNT[7:0]计数值,以便跟踪在所述执行流退出循环之前,DMA描述符100的重复集合或循环被DMA引擎152处理的次数。因此,LOOP_CNT[7:0]值表示DMA引擎152可以为了做出分支决定而测试的潜在的条件值,下面将进一步阐述。递减循环计数器参数155指定一个值(在本文中,被称为“DEC_LOOP_CNT”),其在当与DMA描述符100关联的DMA传输完成时,控制LOOP_CNT[7:0]值是否递减。因此,例如,DMA描述符执行路径170的最后一个DMA描述符100-N可以使DMA引擎152递减LOOP_CNT[7:0]值。
一般来说,在用于当前执行的DMA描述符100的DMA传输完成后,链接控制参数158(具有值,在这里被称为“LINK_SEQUENTIAL”)控制DMA引擎的到下一个DMA描述符100的链接。在这个方式中,根据一个示例性实施例,可以出现两种链接类型。第一种链接类型是顺序链接,这意味着要被执行的下一个DMA描述符100位于下一个相邻的DMA描述符存储器位置。例如,一组DMA描述符100可以被顺序存储在相邻存储器中。作为一个例子,假设四个字长度的DMA描述符,如果用于当前正被处理的DMA描述符100的LINK_SEQUENTIAL值指示顺序寻址(LINK_SEQUENTIAL=SQTL),那么一般来说,在当前DMA传输完成后,DMA描述符引擎152从(当前正被执行的DMA描述符100的)当前基址递增其DMA描述符存储器地址指针四个字以获取下一个DMA描述符100的地址。
第二种链接类型是非顺序链接,这意味着链接地址参数157(在这里被称为LINK_ADDRESS[29:0])指定要被执行的下一个DMA描述符100的存储器位置。当LINK_SEQUENTIAL值指示非顺序寻址时(LINK_SEQUENTIAL=LINK),那么在当前的DMA传输完成后,LINK_ADDRESS[29:0]值指定用于要被执行的下一个字对齐的DMA描述符100的绝对地址。
需要指出的是,对于给定的DMA描述符执行流的开始的第一DMA描述符100,LINK_SEQUENTIAL值可以被编程以指定顺序或非顺序模式,并且DMA描述符100的起始地址可以被编程到描述符100的LINK_ADDRESS[29:0]值中。这个执行流中后续执行的DMA描述符100可以指定顺序链接,因此可以通过使LINK_ADDRESS[29:0]值增加四以使用LINK_ADDRESS[29:0]值,并完成每个DMA循环。此外,正如下面进一步所述,当LOOP_EN值使能循环并且STOP或ELSE分支条件达到时(由LOOP_CNT[7:0]计数值达到零标示),DMA引擎152可以忽略LINK_ADDRESS[29:0]值。
根据一个示例性实施例,在当前DMA描述符执行流完成后,DMA描述符100的链接停止参数159(具有在这里被称为“LINK_STOP”的值)可以被用于选择性使能到下一个DMA描述符100的链接,正如LINK_SEQUENTIAL值所定义的一样。在这个方式下,根据一个示例性实施例,如果在当前执行路径完成后,LINK_STOP允许链接(LINK_STOP=DIS),那么在当前DMA传输完成后,DMA引擎152链接到下一个DMA描述符执行流的DMA描述符100。但是,如果在当前DMA执行路径结束时有以下几种情况,则链接终止:1.循环操作被禁止(LOOP_EN=DIS);或2.循环操作被使能(LOOP_EN=EN)并且已经达到循环结束(LOOP_CNT[7:0]=0)。
根据一个示例性实施例,在当前DMA描述符执行循环流终止或结束时,DMA描述符100的参数可用于控制两种类型的条件分支:LOOP_STOP分支,在其中,DMA描述符100执行终止并且DMA引擎152变换到空闲状态;以及LOOP_ELSE分支,在其中,DMA引擎152开始执行另一个DMA执行流。
更为具体地,假设DMA引擎152在循环中正在执行DMA描述符100,而LOOP_CNT[7:0]计数值是非零的,循环继续。当LOOP_CNT[7:0]计数值达到零并且LINK_STOP参数禁止链接(LINK_STOP=EN)时,那么发生LINK_STOP分支,从而使DMA引擎152空闲。继续这个循环执行流的例子,当LOOP_CNT[7:0]计数值达到零并且LINK_STOP参数使能链接(LINK_STOP=DIS)时,那么DMA引擎152以相反方式解译LINK_SEQUENTIAL值,以确定另一个执行流的下一个DMA描述符100的地址。在这种方式中,如果LINK_SEQUENTIAL值指示顺序寻址(LINK_SEQUENTIAL=SQTL),那么LOOP_ELSE决定包括DMA引擎152使用LINK_ADDRESS[29:0]值以用于非顺序寻址。如果LINK_SEQUENTIAL值指示非顺序寻址(LINK_SEQUENTIAL=LINK),那么LOOP_ELSE决定包括DMA引擎152忽略LINK_ADDRESS[29:0]并访问存储器中的下一个DMA描述符100。
作为一个更具体的例子,DMA引擎152可以在形成循环的DMA描述符执行流170中开始处理图3的N个描述符100的集合(在图3中示出的描述符100-1,100-2...100-N)。换句话说,根据所述循环,DMA引擎152执行DMA描述符100-1到100-N,从而以所述顺序执行相关联的DMA传输,接着,如果LOOP_CNT[7:0]计数器值在DMA描述符100-N处理后是非零,则DMA引擎152继续随后处理DMA描述符100-1。然而,如果在处理DMA描述符100-N后,LOOP_CNT[7:0]计数器值是零,则DMA引擎152基于LINK_STOP值做出分支决定,如上所述。
通过这样的方式,对于图3的例子,DMA描述符100-N的LINK_STOP值被禁止(LINK_STOP=DIS),从而允许LOOP_ELSE到另一个执行流172,以示例性DMA描述符100-N+1开始。对于这个例子,DMA描述符100-N的LINK_SEQUENTIAL值指示非顺序链接,这被用于实现在DMA描述符执行流172中的循环。因此,颠倒用于LOOP_ELSE分支的LINK_SEQUENTIAL值的含义,DMA引擎152使用顺序链接检索DMA描述符100-N+1,即执行路径172的第一描述符。
需要指出的是,作为另一个例子,执行路径170可以具有循环计数一(因此,被执行一次),并且对于这个例子,DMA描述符100-N的LINK_SEQUENTIAL值可以指示顺序链接,从而使DMA引擎152在执行路径170结束时采用非顺序寻址(即,使DMA引擎152使用由LINK_ADDRESS[29:0]值指示的地址)获取DMA描述符100-N+1的地址。因此,可以考虑许多实施例,其在所附权利要求的范围内。
因此,参考图4,根据示例性实施例,根据块204,技术200包括使用描述符的执行控制DMA信道通信。根据块208,所述描述符的数据被用于控制多个执行路径间的描述符执行的分支。
考虑其他的实施例,并且所述其他实施例在所附权利要求的范围内。例如,根据一些实施例,可以使用图5中所述的替代描述符310。与描述符100类似,描述符310包括控制320、源322、目标324和链接326字段。但是,控制320和链接326包含用于控制条件分支目的的不同参数,如下面所述。
尤其是,DMA描述符100的链接顺序参数158在DMA描述符310中被链接模式参数340替换,其中链接模式参数340具有被称为“LINK_MODE”的值。代替控制顺序或非顺序寻址,LINK_MODE值选择相对寻址或绝对寻址,使用LINK_ADDRESS[29:0]值作为基地址,链接到要被处理的下一个DMA描述符。LINK_STOP值可以进一步用于控制条件分支决定。
更为具体地,假设LOOP_EN值允许(LOOP_EN=EN)循环型DMA描述符执行路径,则LINK_MODE值控制链接回到循环的第一DMA描述符310。然而,当循环结束(当LOOP_CNT[7:0]计数值是零)时,对于这个示例性实施例,DMA引擎152忽略LINK_MODE值并允许LINK_STOP和LINK_MODE值控制两种条件链接:当LINK_STOP值使能(LINK_STOP=EN)链接的停止和DMA引擎152的空闲时的LOOP_STOP条件;以及当LINK_STOP值不停止所述链接,以及DMA引擎152忽略由LINK_MODE值指示的寻址,相反,使用顺序寻址载入下一个DMA描述符310时的LOOP_ELSE条件。因此,在正常循环操作期间,当在所述循环结尾处评估LOOP_ELSE分支条件时,DMA引擎152使用LINK_MODE值控制DMA描述符链接并忽略LINK_MODE值。
根据一个示例性实施例,LINK_MODE值是只读值,其反映从最后一个链接的DMA描述符310检索的最后一个LINK_MODE值,表示当前的LINK_ADDRESS[29:0]值是绝对地址还是偏离之前的链接地址的相对地址。当LINK_MODE值指示绝对寻址(LINK_MODE=ABS)时,那么,从最后一个DMA描述符310检索的最后链接地址值是绝对地址值,其已经被加载到LINK_ADDRESS[29:0]值中。当LINK_MODE值指示相对寻址(LINK_MODE=REL)时,那么,从DMA描述符310提取的最后链接地址值是相对地址值。
根据一个示例性实施例,对于链接的相对值,LINK_ADDRESS[29:0]值的最低有效位(例如,最低有效16位)被解译为二的补数,其指示四个字偏离当前描述符结构的基地址的数量。DMA引擎152将当前地址和偏移量相加,并将结果存储在LINK_ADDRESS[29:0]字段中,以指向下一个DMA描述符310的基地址。
当允许链接时,LINK_STOP值允许到下一个DMA执行流的链接,其由当前DMA传输完成后的LINK_MODE值定义。如果LINK_STOP参数禁止链接,则如果循环操作被禁止或如果被使能,并且所述循环已经达到结束以及LOOP_CNT[7:0]字段为零,那么,在当前DMA传输完成后,DMA描述符执行终止。
需要指出的是,对于这个特定的实施例,当所述循环使能参数被使能并且STOP或ELSE条件达到时(由LOOP_CNT[7:0]字段为零所表示),LINK_ADDRESS[29:0]字段被忽略。
因此,参考图6,根据一个示例性实施例,图5的DMA描述符310可以阐述示例性执行流350。示例性执行流350具有两个DMA描述符执行路径360和370。执行路径360由LINK_MODE值控制。当对执行路径370进行变换时,LINK_MODE值被忽略,并且执行默认为顺序寻址。
参考图7,根据一些实施例,MCU可以是控制电机474的系统400的部分。在这个方式中,MCU可以生成/接收针对电机接口470的控制的输入和输出信号(I/O信号),其中电机接口470生成和接收针对操作电机474的信号。例如,MCU可以在其I/O端子处产生信号从而与电机接口470的驱动器、传感器等通信;并且关于这个通信,MCU的I/O端子可以经由一个或更多串行总线传输波形(例如,脉宽调制(PWM)信号)、接收感测的电流和电压、传输数据等。MCU可以进一步包括,例如,其他I/O端子440,其用于生成/接收信号以和用户控制476接口通信,如达到传输电机474和电机接口470的状态的目的;传送检测到的故障状态;接收用户指示的命令和信号;等等。
虽然本文仅描述了数量有限的实施例,但是本领域的技术人员应当明白,受益于本公开,将得出许多更改和变化。所附权利要求覆盖所有这样的更改和变化是可以预期的。
Claims (13)
1.一种用于控制直接存储器存取通信的方法,其包括:
使用描述符的执行控制直接存储器存取通信;以及
使用来自所述描述符中的给定描述符的数据控制至少一个所述描述符的重复执行,从而控制多个执行路径间的描述符执行的分支,
其中使用所述数据包括:
使用循环计数器调节使用所述多个执行路径的第一执行路径的至少一个所述描述符的所述重复执行的数量以及使用链接参数的第一解译定义次序,在所述次序中,利用所述第一执行路径执行所述描述符中的至少一些;以及
使用所述链接参数的第二解译使所述描述符执行沿着所述多个执行路径的第二执行路径,以响应所述循环计数器指示所述数量的重复执行的终止。
2.根据权利要求1所述的方法,其中使用所述数据包括,使用所述数据以控制与所述多个执行路径的选择相关的if-then-else决定。
3.根据权利要求1所述的方法,其中使用所述第一解译包括使用顺序描述符寻址和链接描述符寻址中的一个,以及使用所述第二解译包括使用链接描述符寻址和顺序描述符寻址中的另一个。
4.一种用于控制直接存储器存取通信的装置,其包括:
存储器,其存储控制直接存储器存取通信即DMA通信的描述符;和
控制电路,其使用所述描述符的给定描述符中的数据控制至少一个所述描述符的重复执行,从而控制多个替代执行路径间的描述符执行的分支,其中所述控制电路适于使用顺序描述符寻址和非顺序描述符寻址中的一个,以及使用所述顺序描述符寻址和所述非顺序描述符寻址中的另一个,以响应若干数量的所述重复执行的终止。
5.根据权利要求4所述的装置,其中所述控制电路适于:
使用循环计数器调节使用所述多个替代执行路径的第一执行路径的至少一个所述描述符的所述重复执行的数量以及使用链接参数的第一解译定义次序,在所述次序中,利用所述第一执行路径执行所述描述符中的至少一些;以及
使用所述链接参数的第二解译,以使所述描述符执行沿着所述多个替代执行路径的第二执行路径,以响应所述循环计数器指示所述数量的重复执行的终止。
6.一种用于控制直接存储器存取通信的装置,其包括:
集成电路,其包括处理核和直接存储器存取引擎,即DMA引擎,其中所述DMA引擎适于:
处理描述符以控制直接存储器存取通信,即DMA通信,所述描述符包含指示与所述DMA通信关联的通信端点的数据;
使用包含在所述描述符中的给定描述符中的其他数据控制至少一个所述描述符的重复执行从而控制多个替代执行路径间的描述符执行的分支;
使用循环计数器调节使用所述多个替代执行路径的第一执行路径的至少一个所述描述符的所述重复执行的数量和使用链接模式参数控制是使用相对寻址还是绝对寻址;以及
使用预定义寻址以使所述描述符执行沿着第二执行路径,以响应所述数量的重复执行的终止。
7.根据权利要求6所述的装置,其中所述DMA引擎适于使用顺序描述符寻址和非顺序描述符寻址中的一个,以及使用所述顺序描述符寻址和所述非顺序描述符寻址中的另一个,以响应所述循环计数器的终止。
8.根据权利要求6所述的装置,其中所述描述符进一步包含指示与所述DMA通信关联的字节传输大小的数据。
9.根据权利要求6所述的装置,其进一步包括:
存储器,其中所述处理核和所述直接存储器存取引擎的每个适于独立地访问所述存储器。
10.根据权利要求9所述的装置,其中所述描述符中的至少一个被存储在所述存储器中。
11.根据权利要求10所述的装置,其中所述直接存储器存取引擎适于从所述存储器检索所述至少一个描述符。
12.根据权利要求6所述的装置,其中所述直接存储器存取引擎适于执行所述描述符,以便控制与所述多个替代执行路径的选择相关的if-then-else决定。
13.一种用于控制直接存储器存取通信的方法,其包括:
在基于处理器的机器中使用描述符的执行控制直接存储器存取通信;以及
使用来自所述描述符中的给定描述符的数据控制多个替代执行路径间的描述符执行的分支,其中使用所述数据包括:
使用链接参数的第一解译定义次序,在所述次序中,利用第一执行路径执行所述描述符中的至少一些;以及
使用所述链接参数的第二解译使描述符执行沿着所述多个替代执行路径的第二执行路径。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/731,278 US9164936B2 (en) | 2012-12-31 | 2012-12-31 | System and method for regulating direct memory access descriptor among multiple execution paths by using a link to define order of executions |
US13/731,278 | 2012-12-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103914416A CN103914416A (zh) | 2014-07-09 |
CN103914416B true CN103914416B (zh) | 2018-05-15 |
Family
ID=51018594
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310750275.2A Active CN103914416B (zh) | 2012-12-31 | 2013-12-31 | 调节直接存储器存取描述符的执行 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9164936B2 (zh) |
CN (1) | CN103914416B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170093255A1 (en) * | 2015-09-25 | 2017-03-30 | Nidec Elesys Corporation | Electronic controller for electric power steering |
US20170147517A1 (en) * | 2015-11-23 | 2017-05-25 | Mediatek Inc. | Direct memory access system using available descriptor mechanism and/or pre-fetch mechanism and associated direct memory access method |
US10809929B2 (en) * | 2018-11-30 | 2020-10-20 | International Business Machines Corporation | Combined hardware/software-enforced segmentation of multi-tenant memory/storage systems |
US11023400B1 (en) | 2020-01-20 | 2021-06-01 | International Business Machines Corporation | High performance DMA transfers in host bus adapters |
US11669464B1 (en) | 2020-04-24 | 2023-06-06 | Xilinx, Inc. | Multi-addressing mode for DMA and non-sequential read and write patterns |
CN112131175B (zh) * | 2020-08-28 | 2022-06-17 | 山东云海国创云计算装备产业创新中心有限公司 | 一种SoC芯片、功耗控制方法及可读存储介质 |
US11550736B1 (en) * | 2021-09-30 | 2023-01-10 | Amazon Technologies, Inc. | Tensorized direct memory access descriptors |
US11983128B1 (en) | 2022-12-16 | 2024-05-14 | Amazon Technologies, Inc. | Multidimensional and multiblock tensorized direct memory access descriptors |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5953512A (en) * | 1996-12-31 | 1999-09-14 | Texas Instruments Incorporated | Microprocessor circuits, systems, and methods implementing a loop and/or stride predicting load target buffer |
US20050138233A1 (en) * | 2003-12-23 | 2005-06-23 | Intel Corporation | Direct memory access control |
US20050223172A1 (en) * | 2004-03-31 | 2005-10-06 | Ulrich Bortfeld | Instruction-word addressable L0 instruction cache |
US7680962B2 (en) * | 2004-12-22 | 2010-03-16 | Nec Electronics Corporation | Stream processor and information processing apparatus |
US7428603B2 (en) * | 2005-06-30 | 2008-09-23 | Sigmatel, Inc. | System and method for communicating with memory devices via plurality of state machines and a DMA controller |
JP4680876B2 (ja) * | 2006-12-11 | 2011-05-11 | ルネサスエレクトロニクス株式会社 | 情報処理装置及び命令フェッチ制御方法 |
-
2012
- 2012-12-31 US US13/731,278 patent/US9164936B2/en active Active
-
2013
- 2013-12-31 CN CN201310750275.2A patent/CN103914416B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN103914416A (zh) | 2014-07-09 |
US20140189169A1 (en) | 2014-07-03 |
US9164936B2 (en) | 2015-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103914416B (zh) | 调节直接存储器存取描述符的执行 | |
US8726253B2 (en) | Method and apparatus for compiling regular expressions | |
CN105068818B (zh) | 生成渠道包的方法、装置与批量生成渠道包的方法、系统 | |
CN103559156B (zh) | 一种fpga与计算机之间的通信系统 | |
Roy et al. | SensPnP: Seamless integration of heterogeneous sensors with IoT devices | |
CN107907814B (zh) | 一种提高芯片量产测试效率的方法 | |
CN106844285B (zh) | 一种mcu芯片架构系统 | |
CN103823698A (zh) | Fpga和dsp目标程序的烧写和启动的方法及设备 | |
US10776306B2 (en) | Serial port communication mode conversion method, system, and circuit | |
CN102999320A (zh) | 测试用例自动生成方法和系统 | |
US10789192B2 (en) | System and method for programming data transfer within a microcontroller | |
JP6998991B2 (ja) | 情報処理用方法及び装置 | |
CN105930241B (zh) | Emmc接口和nand接口的相位调整方法及装置 | |
CN102904550A (zh) | 基于ad9959的多通道同步波形发生器 | |
CN107479940A (zh) | 一种实现物联网模块的方法及装置 | |
CN107436618A (zh) | 一种基于指令架构的任意波形发生器 | |
CN114968864B (zh) | 验证环境的搭建方法、芯片的验证方法及系统 | |
US20150006768A1 (en) | Immediate direct memory access descriptor-based write operation | |
CN105204861A (zh) | 一种注册表重定向方法及装置 | |
CN106227673B (zh) | 一种基于dma的序列波形合成方法 | |
CN206757602U (zh) | 一种基于SoC支持多个SPI接口标准组的装置 | |
CN107528898A (zh) | 一种实现物联网模块的方法及装置 | |
CN108399245A (zh) | 智能家电网关设备的数据处理方法、装置及智能家电网关 | |
US8149721B2 (en) | Test apparatus and test method | |
CN106773918B (zh) | 一种基于单片机的控制器的用户梯形图语言控制方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |