CN112540730B - 可动态重构的dma阵列 - Google Patents
可动态重构的dma阵列 Download PDFInfo
- Publication number
- CN112540730B CN112540730B CN202011465235.XA CN202011465235A CN112540730B CN 112540730 B CN112540730 B CN 112540730B CN 202011465235 A CN202011465235 A CN 202011465235A CN 112540730 B CN112540730 B CN 112540730B
- Authority
- CN
- China
- Prior art keywords
- dma
- array
- linked list
- information
- dma array
- 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
- 238000000034 method Methods 0.000 claims description 62
- 230000008569 process Effects 0.000 claims description 54
- 230000008859 change Effects 0.000 claims description 15
- 230000015654 memory Effects 0.000 claims description 15
- 238000003491 array Methods 0.000 claims description 6
- 230000004048 modification Effects 0.000 claims description 6
- 238000012986 modification Methods 0.000 claims description 6
- 101150090596 DMA2 gene Proteins 0.000 description 25
- 101150043088 DMA1 gene Proteins 0.000 description 24
- 238000010586 diagram Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种可动态重构的DMA阵列,包括控制CPU、多个DMA、信息共享池和重构控制逻辑,所述控制CPU被配置为配置和启动DMA阵列,并构造所述DMA阵列的重构控制信息;所述信息共享池被配置为存储所述DMA阵列中各个DMA的状态信息,并维护可由所述多个DMA访问和共享的信息;所述重构控制逻辑被配置为对DMA阵列的控制信息进行修改,以实时调整所述多个DMA的操作过程。本发明能够实现DMA阵列的任意控制和重构,使得DMA的工作不依赖于CPU的控制。
Description
技术领域
本发明属于磁盘阵列领域,特别涉及一种可动态重构的DMA阵列。
背景技术
在多种芯片开发设计的过程中,对于数据流的处理往往是一个非常棘手的问题。为了降低CPU在数据流的调度和搬移上占用的过多时间,DMA应运而生,帮助CPU进行数据流调度和搬移,从而释放CPU时间,使得CPU专注于其他事务处理。但DMA的调度和控制依然是一个无法回避的难题。
通常DMA的工作方式主要有两种:一种为普通DMA模式,即DMA在预先配置的控制下,通过软件或硬件触发之后开始工作,在给定配置模式下的操作执行完毕之后结束;另一种为链表DMA模式(通常也叫Scatter-Gather DMA或Descriptor Based DMA或Linked ListDMA),工作方式由预先配置的操作描述符链组成,首先获得操作描述符链的首地址,依靠该首地址获得操作描述符,在解析操作描述符之后执行该次操作,在确保该次描述符没有结束的情况下,依照描述符定义的方法获取剩下的描述符。但两种工作方式下DMA的工作效率都是较低的,因为在预先设定的方式结束之后总是需要再次配置并重新启动。即使在链表方式下,由于DMA本身进行可能是复杂数据流处理,数据流在各个阶段的相关性各不相同,所以DMA事实上无法以单一链表完成所有操作,而必须在节拍不停被打断并检查特定条件满足的情况下,重新配置之后或重新构造指定链表之后开始工作,从而降低效率,而且每次重新启动需要再次配置,即意味着占用了CPU的额外时间。
此外,在真实场景下,不得不依赖CPU或MCU与DMA之间的交互,帮助DMA完成所有操作。尽管利用DMA来进行数据流调度和搬移,但由于DMA没有进行信息交换和协同工作的能力,CPU或MCU实际上依然主导整个流控过程,在一些复杂场景下,甚至不得不考虑为专门的DMA搭配CPU或MCU进行有效调度。
发明内容
本发明的目的在于提供一种高效快速的可自动重构的DMA阵列,有效解决数据流的调度问题,提高DMA效率并避免过多占用CPU时间,使DMA阵列理想情况下实现自我控制和调节。
本发明在第一方面提供了一种可动态重构的DMA阵列,包括控制CPU、多个DMA、信息共享池和重构控制逻辑,
所述控制CPU被配置为配置和启动DMA阵列,并构造所述DMA阵列的重构控制信息;
所述信息共享池被配置为存储所述DMA阵列中各个DMA的状态信息,并维护可由所述多个DMA访问和共享的信息;
所述重构控制逻辑被配置为对DMA阵列的控制信息进行修改,以实时调整所述多个DMA的操作过程。
优选地,所述DMA阵列进一步包括总线系统,所述各个DMA通过自身的总线与所述总线系统相连接,以访问阵列中的其他各个模块。
优选地,所述DMA阵列被配置为,响应于控制CPU构造的重构控制信息,或者DMA阵列主动重构的控制信息,或者硬件初始设定的控制信息,修改所述信息共享池中的DMA的状态信息,以使所述重构控制逻辑对重构控制信息进行重构配置,基于重构后配置的控制信息,重构所述DMA阵列的执行过程。
优选地,所述多个DMA或所述控制CPU进一步被配置为,通过所述信息共享池对应的访问总线对所述信息共享池进行访问。
优选地,所述重构控制逻辑被配置为,通过访问信息共享池,获取对所述DMA阵列的控制,或,通过对应的重构控制端口接收对DMA阵列的控制信息的修改,基于所述修改来调整DMA阵列的控制。
优选地,所述多个DMA或所述控制CPU进一步被配置为,通过所述重构控制逻辑的访问总线对所述重构控制逻辑进行访问和配置。
优选地,所述DMA阵列进一步包括多个存储器,被配置为存储DMA阵列的每个DMA的链表,所述链表用于维护每个DMA的重构控制信息,并且每个DMA或控制CPU通过所述多个存储器相应的总线来访问各个存储器。
优选地,所述链表由所述控制CPU进行构造,每个DMA的执行过程在执行链表的过程中改变或重构。
优选地,所述多个DMA分别解析各自的描述符链,并对指定描述符完成多次执行过程。
本发明的第二方面涉及一种基于上述任一技术方案所述的可动态重构的DMA阵列的DMA动态重构方法,包括:
步骤S0:开始;
步骤S1:所述控制CPU构造DMA阵列的链表,所述DMA阵列中的每个DMA的执行过程由每个DMA在执行所构造的链表的过程中互相改变或重构;
步骤S2:CPU启动DMA阵列;
步骤S3:DMA阵列中一个或多个DMA将开始执行链表;
步骤S4:根据所述一个或多个DMA的状态,判断是否满足条件P0至条件P3中之一:
条件P0:在执行过程中,DMA阵列中一个或多个DMA进入暂停状态,等待接收对应的控制信息或被重构;
条件P1:在执行过程中,DMA阵列中一个或多个DMA发生状态改变;
条件P2:在执行过程中,DMA阵列中一个或多个DMA通过执行所述链表对所述信息共享池的内容进行改写;
条件P3:在执行过程中,DMA阵列中一个或多个DMA通过执行所述链表对所述重构控制逻辑进行改写;
步骤S5:判断DMA阵列是否被重构,即判断在满足条件P0,P1,P2或P3的情况下,DMA阵列的执行过程是否已被改变;如果被改变,DMA阵列继续执行步骤S3,开始执行重构后的链表;如果未被改变,DMA阵列执行步骤S6;
步骤S6:判断DMA阵列的所有操作是否结束。如果未结束,DMA阵列继续执行步骤S3,继续执行先前的链表;如果已结束,执行步骤S7;
步骤S7:流程结束。
相比于现有技术,本发明通过DMA在执行过程中对信息共享池的修改获得动态控制和改变DMA执行方式的信息,同时在执行过程中控制并修改对阵列中的每个DMA的控制方式,达到动态重构和改变DMA阵列,实现DMA阵列的自我调节和改变,以任意组合方式的DMA重构。
本发明的其它特征和优点将在随后的说明书中阐述,并且部分地从说明书中变得显而易见,或通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所指出的结构来实现和获得。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了根据本发明的可动态重构的DMA阵列的示意图。
图2示出了根据本发明的实施例的可重构DMA阵列的工作流程图。
图3示出了根据本发明的另一可选实施例的可重构DMA阵列的示意图。
图4示出了与图3实施例的可重构DMA阵列相对应的DMA阵列执行流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为有效解决以上提出的数据流的调度问题,提高DMA的效率,实现自我控制和调节,本发明引入信息共享池的概念和重构控制逻辑,利用DMA阵列在操作过程中动态改变信息共享池的内容并基于该内容动态改变DMA阵列的行为,从而实现DMA阵列的动态重构,控制DMA阵列按照所需要的方式完成整个数据流的处理过程。
本发明的可动态重构的DMA阵列预先利用软件或预定义的数据格式来构造DMA阵列的控制链表,根据DMA阵列的状态信息以及在特定过程中执行的操作写入的信息组成DMA阵列之间的信息共享池,利用信息共享池中的结果进一步产生对DMA阵列进行过程控制的信息,从而利用DMA阵列在工作过程中加入动态控制信息来改变信息共享池的内容,控制并影响DMA阵列的执行过程,使得DMA阵列在执行控制链表的过程中实现动态调度和自我控制。
本发明的可动态重构的DMA阵列的具体实现方式如图1所示。可动态重构的DMA阵列包括:
控制CPU C0。所述控制CPU(或MCU)主要进行DMA阵列的配置和启动。DMA阵列的配置和启动可以认为是以一种初始化的方式进行,即按需构造DMA的重构及控制过程。在重构控制信息被CPU构造完成之后,DMA阵列在启动之后的执行过程中,即可主动输出或改写信息共享池,同时配置并改写重构控制信息,使DMA阵列可以接受重构之后的控制信息,重构并改变DMA阵列的执行过程。控制CPU可通过总线C1来配置总线系统C16中的各种资源,包括对DMA的初始配置及启动;
DMA阵列中的多个DMA实例C2.0,C2.1,C2.2,…,C2.n,其中每个DMA通过自身的总线C3.0,C3.1,C3.2,…,C3.n与所述总线系统C16相连接,可以访问阵列中的其他各个模块;其中,DMA阵列中的每个DMA实例C2.0,C2.1,C2.2,…,C2.n对应的状态信息C4.0,C4.1,C4.2,…,C4.n被连接到信息共享池,形成控制信息或控制反馈的一部分;DMA对应的控制信息C5.0,C5.1,C5.2,…,C5.n连接到每个DMA实例C2.0,C2.1,C2.2,…,C2.n,用于对相应DMA进行控制,在信息共享池的内容改变或重构控制逻辑改变时,获得的控制信息也会相应改变,从而达到改变重构DMA阵列的目的;
信息共享池C7,用于被动地改变或收集DMA阵列中各个DMA的状态信息,并同时提供和维护可由各DMA访问和共享的信息,各个DMA可以基于信息共享池的内容进行决策和判断,执行不同的操作。DMA或控制CPU通过信息共享池对应的访问总线C6对信息共享池进行访问,达到获取信息或改变信息共享池内的内容的目的。
重构控制逻辑C10,用于对DMA阵列的控制信息进行动态修改,同时所述重构控制逻辑既可以由信息共享池获取对DMA阵列的控制,也可以通过自身的总线接口被动态修改后改变对DMA阵列的控制,达到实时动态调整DMA阵列中的每个DMA的操作过程。信息共享池和重构控制逻辑之间通过信息交互通道来传输交互信息C9。重构控制逻辑在获取信息共享池的内容之后,通过对应的重构控制端口对DMA阵列中的各个DMA进行重构控制,即不仅信息共享池中的信息改变之后可以改变DMA的行为,重构控制逻辑的控制方式和控制对象的改变也能够直接改变DMA阵列中的各个DMA的行为;DMA阵列中的每个DMA或控制CPU可以通过总线系统C16经过重构控制逻辑的访问总线C11访问和配置重构控制逻辑,达到改变DMA阵列重构的目的。
其中所述可动态重构的DMA阵列的总线系统C16用于提供系统中各个master和slave之间互联互通,支持从各个master到各个slave之间的访问。
作为进一步优选的实施例,所述可动态重构的DMA阵列还包括各个不同位置和形式的存储器实体C12.0,C12.1,…,C12.m为系统提供各种数据,包括为DMA阵列的每个DMA提供链表。每个DMA或控制CPU可通过总线系统经过存储器实体相应的总线C13.0,C13.1,…,C13.m来访问各个存储器实体。
作为进一步优选的实施例,所述可动态重构的DMA阵列还包括各个不同位置和形式的外设实体C14.0,C14.1,…,C14.k可由DMA阵列或CPU通过总线系统经过相应的总线C15.0,C15.1,…,C15.k进行访问。
根据本发明上述实施例,通过DMA阵列之间的状态改变以及DMA在执行过程中对信息共享池的修改获得动态控制和改变DMA执行方式的信息,同时DMA阵列在执行过程中控制并修改对阵列中的每个DMA的控制方式,达到动态重构和改变DMA阵列的执行方式。本发明可以根据DMA阵列的自我调节和改变,实现任意组合方式的DMA重构和执行。
而且,如果控制DMA的链表可以采用灵活的方式构造于芯片之外的存储器,如可擦除ROM,flash,即意味着DMA阵列的控制方式可以根据需要通过片外存储器灵活修改,同时如果DMA阵列可以通过给定的初始条件触发开始工作,则本发明中的DMA阵列实际上并不依赖于CPU的控制。
图2为根据本发明优选实施例的可重构DMA阵列的工作流程图,该流程主要包括以下步骤:
步骤S0:开始;
步骤S1:所述控制CPU构造DMA阵列的链表,通过构造该链表,DMA阵列中的每个DMA的执行过程将由每个DMA在执行链表的过程中互相改变或重构;
步骤S2:CPU启动DMA阵列;
步骤S3:DMA阵列中的部分DMA或全部DMA将开始执行链表;
步骤S4:根据所述部分DMA或全部DMA的状态,判断是否满足条件P0至条件P3中之一:
条件P0:在执行过程中,DMA阵列中的部分DMA或全部DMA进入暂停状态,等待接收对应的控制信息或被重构;
条件P1:在执行过程中,DMA阵列中的部分DMA或全部DMA发生状态改变;
条件P2:在执行过程中,DMA阵列中的部分DMA或全部DMA通过执行链表对信息共享池的内容进行改写;
条件P3:在执行过程中,DMA阵列中的部分DMA或全部DMA通过执行链表对重构控制逻辑进行改写;
步骤S5:判断DMA阵列是否被重构,即判断在满足条件P0,P1,P2或P3的情况下,DMA阵列的执行过程是否已被改变。如果被改变,DMA阵列继续执行步骤S3,开始执行重构后的链表;如果未被改变,DMA阵列执行步骤S6;
步骤S6:判断DMA阵列的所有操作是否结束。如果未结束,DMA阵列继续执行步骤S3,继续执行先前的链表;如果已结束,执行步骤S7;
步骤S7:流程结束。
从图1和2所示的结果可以看出,事实上,DMA的操作和重构并不依赖于CPU的控制,只要硬件的设计能够给定足够的信息,DMA阵列就可以根据设定的初始条件启动,并完成自我控制和重构过程,也就是说,DMA阵列本身就可以根据给定的信息完成自我控制和重构,不需要任何CPU参与的控制过程和操作,而是可以按照给定的方式自我重构。
此外,本领域技术人员可以理解,图1所示的可动态重构的DMA阵列架构示意图并不构成对本发明的硬件结构的限定,而是可以包括现有技术中更多或更少的部件,或某些部件的组合。例如,DMA工作方式不限于链表形式,而是可以采用其他任何常规的存储结构。此外,本发明的技术方案不限于芯片领域,例如也可用于例如FPGA,CPLD等其它领域的设计。尽管图1描述了DMA阵列的控制信息来自DMA阵列本身,但本领域技术人员可以理解,所述控制信息还可以来自任何其它部件。
图3和图4分别为可重构DMA阵列的非限制性实现说明和执行示例,图3的实现示例中的主要组件和控制过程说明如下。
DMA0,DMA1和DMA2(标记为C0,C1,C2)为可重构DMA阵列中的3个DMA实例,参考图4所述,在依次执行的步骤S0-S8中分别执行各自的描述符,每个步骤包括对应DMA对指定描述符实施的多次执行过程;
描述符D0.0,D0.1,…,D0.n-1是DMA0在步骤S0中执行的n条描述符;
描述符D1.0,D1.1,…,D1.n-1是DMA1在步骤S1中执行的n条描述符;
描述符D2.0,D2.1,…,D2.n-1是DMA2在步骤S2中执行的n条描述符;
描述符D0.n,D0.n+1,…,D0.2n-1是DMA0在步骤S3中执行的n条描述符;
描述符D1.n,D1.n+1,…,D1.2n-1是DMA1在步骤S4中执行的n条描述符;
描述符D2.n,D2.n+1,…,D2.2n-1是DMA2在步骤S5中执行的n条描述符;
描述符D0.2n,D0.2n+1,…,D0.3n-1是DMA0在步骤S6中执行的n条描述符;
描述符D1.2n,D1.2n+1,…,D1.3n-1是DMA1在步骤S7中执行的n条描述符;
描述符D2.2n,D2.2n+1,…,D2.3n-1是DMA2在步骤S8中执行的n条描述符;
多个DMA之间的执行过程具有关联性,在每个DMA状态的改变之后将影响相关DMA的执行过程。与图3相对应的执行流程如图4所示。图4中的DMA阵列执行过程说明如下:
步骤S0:开始;
步骤S1.0:根据启动状况,DMA0执行图3中阵列指定链表的步骤S0的操作;
步骤S1.1:根据启动状况,DMA1进入等待DMA0执行完成针对图3中指定链表的步骤S0的操作;
步骤S1.2:根据启动状况,DMA2进入等待DMA1执行完成针对图3中指定链表的步骤S1的操作;
步骤S2:DMA0执行完成针对指定链表的步骤S0的操作,并进入等待DMA2执行完成针对图3中指定链表的步骤S2的操作;
步骤S3:DMA1获取DMA0执行指定链表的步骤S0的状态,如果DMA0已经结束针对图3中指定链表的步骤S0的操作,则执行步骤S4;
步骤S4:DMA1执行图3中阵列指定链表的步骤S1的操作;
步骤S5:DMA1执行完成针对指定链表的步骤S1的操作,并进入等待DMA0执行完成针对图3中指定链表的步骤S3的操作;
步骤S6:DMA2获取DMA1执行图3中指定链表的步骤S1的状态,如果DMA1已经结束针对图3中指定链表的步骤S1的操作,则执行步骤S7;
步骤S7:DMA2执行图3中阵列指定链表的步骤S2的操作;
步骤S8:DMA2执行完成针对图3中指定链表的步骤S2的操作,并进入等待DMA1执行完成针对图3中指定链表的步骤S4的操作;
步骤S9:DMA0获取DMA2执行图3中指定链表的步骤S2的状态,如果DMA2已经结束针对图3中指定链表的步骤S2的操作,则执行步骤S10;
步骤S10:DMA0执行图3中阵列指定链表的步骤S3的操作;
步骤S11:DMA0执行完成针对图3中指定链表的步骤S3的操作,并进入等待DMA2执行完成针对图3中指定链表的步骤S5的操作;
步骤S12:DMA1获取DMA0执行图3中指定链表的步骤S3的状态,如果DMA1已经结束针对图3中指定链表的步骤S3的操作,则执行步骤S13;
步骤S13:DMA1执行图3中阵列指定链表的步骤S4的操作;
步骤S14:DMA1执行完成针对图3中指定链表的步骤S4的操作,并进入等待DMA0执行完成针对图3中指定链表的步骤S6的操作;
步骤S15:DMA2获取DMA1执行图3中指定链表的步骤S4的状态,如果DMA1已经结束针对图3中指定链表的步骤S4的操作,则执行步骤S16;
步骤S16:DMA2执行图3中阵列指定链表的步骤S5的操作;
步骤S17:DMA2执行完成针对图3中指定链表的步骤S5的操作,并进入等待DMA1执行完成针对图3中指定链表的步骤S7的操作;
步骤S18:DMA0获取DMA2执行图3中指定链表的步骤S5的状态,如果DMA2已经结束针对图3中指定链表的步骤S5的操作,则执行步骤S19;
步骤S19:DMA0执行图3中阵列指定链表的步骤S6的操作;
步骤S20:DMA0执行完成针对图3中指定链表的步骤S6的操作,并进入等待DMA2执行完成针对图3中指定链表的步骤S8的操作;
步骤S21:DMA1获取DMA0执行图3中指定链表的步骤S6的状态,如果DMA0已经结束针对图3中指定链表的步骤S6的操作,则执行步骤S22;
步骤S22:DMA1执行图3中阵列指定链表的步骤S7的操作;
步骤S23:DMA1执行完成针对图3中指定链表的步骤S7的操作,并进入等待DMA2执行完成针对图3中指定链表的步骤S8的操作;
步骤S24:DMA2获取DMA1执行图3中指定链表的步骤S7的状态,如果DMA1已经结束针对图3中指定链表的步骤S7的操作,则执行步骤S25;
步骤S25:DMA2执行图3中阵列指定链表的步骤S8的操作;
步骤S26:DMA2执行完成针对图3中指定链表的步骤S8的操作,结束操作;
步骤S27:DMA0获取DMA2执行图3中指定链表的步骤S8的状态,如果DMA2已经结束针对图3中指定链表的步骤S8的操作,则结束操作;
步骤S28:DMA1获取DMA2执行图3中指定链表的步骤S8的状态,如果DMA2已经结束针对图3中指定链表的步骤S8的操作,则流程结束。
图4中的DMA阵列执行过程仅为可动态重构DMA阵列的一个执行实例,由于DMA阵列可以动态输出状态信息或改变DMA之间的共享信息,同时改变重构控制逻辑,所以理论上DMA阵列的控制方式和实现结果可以任意变化。
需要说明的是,图1所示的可动态重构的DMA阵列架构仅用于说明而非限定本发明的技术方案。本领域技术人员应当理解,在本发明的基础上可以根据实际需要对DMA数量、阵列间的交互方式和载体、DMA启动方式、链表数据格式等做出任意的调整,而不应将本发明限于上述示例的具体结构和参数。
可以看出,本发明提供了一种高效快速的DMA阵列架构,同时给出了DMA阵列在获取到链表信息之后执行该信息过程中如何进行操作和重构的过程。利用本发明给出的方法,可以完成DMA阵列的任意控制和重构,并可以将本发明的可动态重构DMA阵列应用于各种场景之中,实现各种不同需求。本发明的可动态重构DMA阵列根据统一设计的硬件结构,在更新不同的阵列操作链表之后,获得对DMA阵列的工作方式,工作过程及工作流程的完全重构,使得DMA甚至在不需要CPU参与的情况下依然保证其便利性类似于CPU控制模式,而且效率可以大幅提高。此外还可以基于本发明的DMA阵列来搭建不依赖于CPU的SOC系统。
尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解,其依然可以对前述各实施例所记载的技术方案进行修改,或对其中部分技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种可动态重构的DMA阵列,包括控制CPU、多个DMA、信息共享池和重构控制逻辑,其特征在于,
所述控制CPU被配置为配置和启动DMA阵列,并构造所述DMA阵列的重构控制信息;所述CPU进一步被配置为构造DMA阵列的链表,其中所述DMA阵列中的每个DMA的执行过程由每个DMA在执行所构造的链表的过程中互相改变或重构;
所述信息共享池被配置为存储所述DMA阵列中各个DMA的状态信息,并维护可由所述多个DMA访问和共享的信息;
所述重构控制逻辑被配置为对DMA阵列的控制信息进行修改,以实时调整所述多个DMA的操作过程;
所述DMA阵列进一步包括总线系统,所述各个DMA通过自身的总线与所述总线系统相连接,以访问阵列中的其他各个模块;
所述DMA阵列被配置为,响应于控制CPU构造的重构控制信息,或者DMA阵列主动重构的控制信息,或者硬件初始设定的控制信息,修改所述信息共享池中的DMA的状态信息,以使所述重构控制逻辑对重构控制信息进行重构配置,基于重构后配置的控制信息,重构所述DMA阵列的执行过程;
所述DMA阵列进一步被配置为,根据所述DMA阵列中的一个或多个DMA的状态,判断是否满足条件P0至条件P3中之一:
条件P0:在执行过程中,DMA阵列中一个或多个DMA进入暂停状态,等待接收对应的控制信息或被重构;
条件P1:在执行过程中,DMA阵列中一个或多个DMA发生状态改变;
条件P2:在执行过程中,DMA阵列中一个或多个DMA通过执行所述链表对所述信息共享池的内容进行改写;
条件P3:在执行过程中,DMA阵列中一个或多个DMA通过执行所述链表对所述重构控制逻辑进行改写;
判断DMA阵列是否被重构,即判断在满足所述条件P0,P1,P2或P3的情况下,DMA阵列的执行过程是否已被改变;如果被改变,则DMA阵列执行重构后的链表。
2.根据权利要求1所述的可动态重构的DMA阵列,其特征在于,所述多个DMA或所述控制CPU进一步被配置为,通过所述信息共享池对应的访问总线对所述信息共享池进行访问。
3.根据权利要求1所述的可动态重构的DMA阵列,其特征在于,所述重构控制逻辑被配置为,通过访问信息共享池,获取对所述DMA阵列的控制,或,通过对应的重构控制端口接收对DMA阵列的控制信息的修改,基于所述修改来调整DMA阵列的控制。
4.根据权利要求1所述的可动态重构的DMA阵列,其特征在于,所述多个DMA或所述控制CPU进一步被配置为,通过所述重构控制逻辑的访问总线对所述重构控制逻辑进行访问和配置。
5.根据权利要求1所述的可动态重构的DMA阵列,其特征在于,所述DMA阵列进一步包括多个存储器,被配置为存储DMA阵列的每个DMA的链表,所述链表用于维护每个DMA的重构控制信息,并且每个DMA或控制CPU通过所述多个存储器相应的总线来访问各个存储器。
6.根据权利要求5所述的可动态重构的DMA阵列,其特征在于,所述链表由所述控制CPU进行构造,每个DMA的执行过程在执行链表的过程中改变或重构。
7.根据权利要求6所述的可动态重构的DMA阵列,其特征在于,所述多个DMA分别解析各自的描述符链,并对指定描述符完成多次执行过程。
8.一种可动态重构的DMA阵列的DMA动态重构方法,所述可动态重构的DMA阵列,包括控制CPU、多个DMA、信息共享池和重构控制逻辑,所述控制CPU被配置为配置和启动DMA阵列,并构造所述DMA阵列的重构控制信息;所述信息共享池被配置为存储所述DMA阵列中各个DMA的状态信息,并维护可由所述多个DMA访问和共享的信息;所述重构控制逻辑被配置为对DMA阵列的控制信息进行修改,以实时调整所述多个DMA的操作过程,所述DMA动态重构方法包括:
步骤S0:开始;
步骤S1:控制所述CPU构造DMA阵列的链表,所述DMA阵列中的每个DMA的执行过程由每个DMA在执行所构造的链表的过程中互相改变或重构;
步骤S2:CPU启动DMA阵列;
步骤S3:DMA阵列中一个或多个DMA将开始执行链表;
步骤S4:根据所述一个或多个DMA的状态,判断是否满足条件P0至条件P3中之一:
条件P0:在执行过程中,DMA阵列中一个或多个DMA进入暂停状态,等待接收对应的控制信息或被重构;
条件P1:在执行过程中,DMA阵列中一个或多个DMA发生状态改变;
条件P2:在执行过程中,DMA阵列中一个或多个DMA通过执行所述链表对所述信息共享池的内容进行改写;
条件P3:在执行过程中,DMA阵列中一个或多个DMA通过执行所述链表对所述重构控制逻辑进行改写;
步骤S5:判断DMA阵列是否被重构,即判断在满足条件P0,P1,P2或P3的情况下,DMA阵列的执行过程是否已被改变;如果被改变,DMA阵列继续执行步骤S3,开始执行重构后的链表;如果未被改变,DMA阵列执行步骤S6;
步骤S6:判断DMA阵列的所有操作是否结束,如果未结束,DMA阵列继续执行步骤S3,继续执行先前的链表;如果已结束,执行步骤S7;
步骤S7:流程结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011465235.XA CN112540730B (zh) | 2020-12-14 | 2020-12-14 | 可动态重构的dma阵列 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011465235.XA CN112540730B (zh) | 2020-12-14 | 2020-12-14 | 可动态重构的dma阵列 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112540730A CN112540730A (zh) | 2021-03-23 |
CN112540730B true CN112540730B (zh) | 2022-02-08 |
Family
ID=75018585
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011465235.XA Active CN112540730B (zh) | 2020-12-14 | 2020-12-14 | 可动态重构的dma阵列 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112540730B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1051994A (zh) * | 1989-11-13 | 1991-06-05 | 国际商业机器公司 | 数据传送操作透明抢占的总线主接口电路 |
CN101059785A (zh) * | 2006-04-17 | 2007-10-24 | 中兴通讯股份有限公司 | 一种利用dma控制器实现二维数据搬运的方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7496695B2 (en) * | 2005-09-29 | 2009-02-24 | P.A. Semi, Inc. | Unified DMA |
US8650336B2 (en) * | 2005-10-28 | 2014-02-11 | Alcatel Lucent | Direct memory access (DMA) device with event mover that moves event from event calendar to expired event queue without management of central processing unit |
CN101452427B (zh) * | 2008-11-19 | 2011-05-11 | 北京红旗胜利科技发展有限责任公司 | 一种dma数据传输系统及方法和一种中央处理器 |
CN101625666B (zh) * | 2009-08-26 | 2011-08-17 | 福建星网锐捷网络有限公司 | 一种数据拷贝、参数信息写入的方法和系统 |
CN101702144B (zh) * | 2009-11-23 | 2011-10-26 | 北京天童芯源科技有限公司 | 一种dma控制器的控制装置及控制方法 |
CN102314400B (zh) * | 2011-09-27 | 2014-12-24 | 广东威创视讯科技股份有限公司 | 一种分散聚合式dma方法及装置 |
CN102841870B (zh) * | 2012-08-10 | 2015-04-15 | 无锡众志和达数据计算股份有限公司 | 基于高速串行总线的通用dma结构及预读方法 |
CN103235717B (zh) * | 2013-04-19 | 2016-04-06 | 中国科学院自动化研究所 | 具有多态指令集体系结构的处理器 |
CN103514140B (zh) * | 2013-08-05 | 2016-03-16 | 东南大学 | 用于实现可重构系统中配置信息多发射的重构控制器 |
-
2020
- 2020-12-14 CN CN202011465235.XA patent/CN112540730B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1051994A (zh) * | 1989-11-13 | 1991-06-05 | 国际商业机器公司 | 数据传送操作透明抢占的总线主接口电路 |
CN101059785A (zh) * | 2006-04-17 | 2007-10-24 | 中兴通讯股份有限公司 | 一种利用dma控制器实现二维数据搬运的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112540730A (zh) | 2021-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112465129B (zh) | 片内异构人工智能处理器 | |
US11782870B2 (en) | Configurable heterogeneous AI processor with distributed task queues allowing parallel task execution | |
US20180060275A1 (en) | Processor system and accelerator | |
CN103605498B (zh) | 单线程任务的多线程执行方法及系统 | |
US20140258974A1 (en) | Programming a multi-processor system | |
CN108710536B (zh) | 一种多层次细粒度的虚拟化gpu调度优化方法 | |
US10580190B2 (en) | Graph based heterogeneous parallel processing system | |
CN103279445A (zh) | 运算任务的计算方法及超算系统 | |
JPWO2003023602A1 (ja) | データ処理システムおよびその制御方法 | |
US9274831B2 (en) | Information processing apparatus, information processing method, and storage medium | |
CN117474082A (zh) | 深度学习模型框架编译器的优化方法及框架编译器 | |
CN107402952A (zh) | 大数据处理加速器及大数据处理系统 | |
CN113407479B (zh) | 一种内嵌fpga的众核架构及其数据处理方法 | |
CN112540730B (zh) | 可动态重构的dma阵列 | |
CN104866297B (zh) | 一种优化核函数的方法和装置 | |
Hironaka et al. | Remote dynamic reconfiguration of a multi-fpga system fic (flow-in-cloud) | |
US20230067432A1 (en) | Task allocation method, apparatus, electronic device, and computer-readable storage medium | |
CN114741166B (zh) | 一种分布式任务的处理方法、分布式系统及第一设备 | |
WO2024187707A1 (zh) | 任务处理方法、芯片、多芯片模块、电子设备和存储介质 | |
CN112953752B (zh) | 一种基于单设备网元的通用控制方法及系统 | |
Moore et al. | Model-integrated program synthesis environment for parallel/real-time image processing | |
CN116149628A (zh) | 一种车端服务装配方法、架构、装置、设备及介质 | |
CN113254385A (zh) | 一种网络结构、并行推理模型的编译加载方法及芯片系统 | |
US10261817B2 (en) | System on a chip and method for a controller supported virtual machine monitor | |
CN115878272B (zh) | 图任务调度方法、执行端设备、存储介质及程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |