DMA控制方法、DMA控制器及电子设备
文献发布时间:2023-06-19 19:20:08
技术领域
本申请涉及数据处理技术领域,尤其涉及一种DMA控制方法、DMA控制器及电子设备。
背景技术
目前,卷积神经网络(Convolutional Neural Network,CNN)是人工智能研究的一项重要分支。卷积是将原始图像与特定的滤波器做卷积运算,得到想要的特征图。但对图像直接进行卷积操作存在两个缺点,一是卷积操作会导致特征图尺寸小于原始图像,例如6×6的图像经过3×3的滤波器卷积得到4×4的卷积结果,卷积次数越多图像会变的越小。二是丢失信息,因为滤波器在原始图像上移动时,原始图像中间位置的像素点会被多次卷积计算,而边缘位置的像素点参与计算次数会较少,导致丢失图像的一些边缘位置的信息。因此在进行卷积操作时,通常需要对卷积的原始图像进行填充操作,例如,沿着原始图像边缘再填充一层像素,将6×6的原始图像填充拼接成8×8的图像存储在外部存储器中,再从外部存储器中传输到卷积模块,卷积模块用3×3的滤波器对8×8的图像卷积,输出的是6×6的图像,从而得到一个尺寸与原始图像一样的特征图,且由于原6×6的图像边缘像素位置更靠近中间故能参与更多次的卷积计算。
由于6×6的图像被填充拼接成8×8的图像时,图像面积会增大1.78倍,相当于图像的存储效率和传输效率都降低43.75%,即图像的填充操作会提高外部存储器的存储空间占用率,且增加了数据传输的时长,导致片上总线的利用率和系统整体性能降低。
发明内容
鉴于以上内容,本申请提供一种DMA控制方法、DMA控制器及电子设备,其目的在于解决上述技术问题。
第一方面,本申请提供一种DMA控制方法,所述方法应用于DMA控制器,所述DMA控制器包括寄存器配置模块、缓存模块、选择器模块、填充位置识别模块及拼接数据生成模块,所述方法包括:
所述寄存器配置模块接收处理器发送的各个模块的配置信息,并将所述配置信息相应分发至所述选择器模块及所述填充位置识别模块;
所述选择器模块接收所述缓存模块发送的原始数据,及接收所述寄存器配置模块发送的所述配置信息携带的填充数据;
所述填充位置识别模块接收所述寄存器配置模块发送的所述配置信息并根据所述配置信息向所述拼接数据生成模块输出拼接指示信息,并根据所述配置信息生成选择信号以使所述选择器模块根据所述选择信号向所述拼接数据模块输出待拼接数据,其中,所述待拼接数据包括所述原始数据或所述填充数据;
所述拼接数据生成模块根据所述待拼接数据及所述拼接指示信息生成目标拼接数据。
第二方面,本申请提供一种DMA控制器,所述DMA控制器包括寄存器配置模块、缓存模块、选择器模块、填充位置识别模块及拼接数据生成模块,所述寄存器配置模块分别与所述缓存模块、所述选择器模块、所述填充位置识别模块及所述拼接数据生成模块通信连接;
所述寄存器配置模块用于接收处理器发送的各个模块的配置信息,并将所述配置信息相应分发至所述选择器模块及所述填充位置识别模块;
所述选择器模块用于接收所述缓存模块发送的原始数据,及接收所述寄存器配置模块发送的所述配置信息携带的填充数据;
所述填充位置识别模块用于接收所述寄存器配置模块发送的所述配置信息并根据所述配置信息向所述拼接数据生成模块输出拼接指示信息,并根据所述配置信息生成选择信号以使所述选择器模块根据所述选择信号向所述拼接数据模块输出相应的待拼接数据,其中,所述待拼接数据包括所述原始数据或所述填充数据;
所述拼接数据生成模块用于根据所述待拼接数据及所述拼接指示信息生成目标拼接数据。
第三方面,本申请提供一种电子设备,所述电子设备包括处理器、通信接口、存储器、通信总线和DMA控制器,所述DMA控制器包括寄存器配置模块、缓存模块、选择器模块、填充位置识别模块及拼接数据生成模块,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时实现如下步骤:
所述寄存器配置模接收处理器发送的各个模块的配置信息,并将所述配置信息相应分发至所述选择器模块及所述填充位置识别模块;
所述选择器模块接收所述缓存模块发送的原始数据,及接收所述寄存器配置模块发送的所述配置信息携带的填充数据;
所述填充位置识别模块接收所述寄存器配置模块发送的所述配置信息并根据所述配置信息向所述拼接数据生成模块输出拼接指示信息,并根据所述配置信息生成选择信号以使所述选择器模块根据所述选择信号向所述拼接数据模块输出相应的待拼接数据,其中,所述待拼接数据包括所述原始数据或所述填充数据;
所述拼接数据生成模块根据所述待拼接数据及所述拼接指示信息生成目标拼接数据。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
本申请通过DMA控制器利用寄存器配置模块分发的配置信息,将原始数据与填充数据进行拼接得到目标拼接数据,由于是在DMA控制器内部生成了目标拼接数据,使得外部存储器不需要再预先存储拼接后的数据,且DMA控制器与片上总线之间只需传输原始数据和配置信息,极大地降低了外部存储器的存储空间占用率,也降低了数据传输的时长,从而提高片上总线的利用率和系统整体性能。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请DMA控制方法较佳实施例的流程图示意图;
图2为本申请DMA控制器的示意图;
图3为本申请电子设备较佳实施例的示意图;
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请提供一种DMA控制方法。参照图1所示,为本申请DMA控制方法的实施例的方法流程示意图。该方法应用于DMA控制器,所述DMA控制器包括寄存器配置模块、缓存模块、选择器模块、填充位置识别模块及拼接数据生成模块,所述方法包括:
步骤S10:所述寄存器配置模块接收处理器发送的各个模块的配置信息,并将所述配置信息相应分发至所述选择器模块及所述填充位置识别模块;
步骤S20:所述选择器模块接收所述缓存模块发送的原始数据,及接收所述寄存器配置模块发送的所述配置信息携带的填充数据;
步骤S30:所述填充位置识别模块接收所述寄存器配置模块发送的所述配置信息并根据所述配置信息向所述拼接数据生成模块输出拼接指示信息,并根据所述配置信息生成选择信号以使所述选择器模块根据所述选择信号向所述拼接数据模块输出相应的待拼接数据,其中,所述待拼接数据包括所述原始数据或所述填充数据;
步骤S40:所述拼接数据生成模块根据所述待拼接数据及所述拼接指示信息生成目标拼接数据。
直接存储器访问(Direct Memory Access,DMA)控制器是一种在计算机系统内部用于CPU和外部设备进行数据传输的装置,通过DMA控制器可以使计算机系统内部存储器和外部存储器之间进行数据的高速传输。参照图2所示,为本申请DMA控制器的示意图,结合图2对图1的DMA控制方法做进一步说明。
寄存器配置模块包括一个符合片上总线格式的传输接口和若干寄存器信号,CPU或其它控制器通过片上总线访问传输接口,并配置这些寄存器,进而通过寄存器配置模块可以控制其它模块的工作。
寄存器配置模块接收处理器(例如,CPU)发送的各个模块的配置信息,并将配置信息相应分发至对应的模块,具体地,将缓存模块的配置信息分发给缓存模块,将选择器模块的配置信息分发给选择器模块,将填充位置识别模块的配置信息分发给填充位置识别模块,将拼接数据生成模块的配置信息分发给拼接数据生成模块,进一步地,所述DMA控制器还包括DMA读模块和DMA写模块,将DMA读模块的配置信息分发给DMA读模块,将DMA写模块的配置信息分发给DMA写模块,DMA读模块和DMA写模块负责生成符合片上总线格式(比如,AXI,AHB等)的接口信号。
其中,缓存模块可以收到以下配置信息:原始数据的位宽,输出的原始数据的位宽等。以6×6的图像数据需要填充成8×8的图像数据为例,6×6的图像数据是指原始数据,8×8的图像数据是指目标拼接数据,对6×6的图像数据进行填充的数据为填充数据。
选择器模块可以收到以下配置信息:填充数据(填充数据是被DMA控制器传输的无效数据,可以被配置在寄存器中发给选择器模块,相对的,原始数据属于被DMA控制器传输的有效数据)。
填充位置识别模块可以收到以下配置信息:目标拼接数据的尺寸(例如,目标拼接数据的长、宽及形状等),原始数据的哪些方向需要被填充(例如,上下左右、或图像内部插入填充),每个方向填充的尺寸(例如,填充数据的长、宽等及形状)等。
拼接数据生成模块可以收到以下配置信息:目标拼接数据的输出规则(例如,是否被循环输出、循环次数、数据是否被跳跃输出、跳跃间隔等)。
DMA读模块可以收到以下配置信息:原始数据在外部存储器中的地址(例如,在外部存储器的首地址),原始数据的长度(数据量),原始数据的目的地址(原始数据传输至哪个模块),读操作的循环次数,DMA启动等。
DMA写模块可以收到以下配置信息:原始数据在DMA控制器中的地址,原始数据的长度(数据量),原始数据的目的地址(将数据写到外部存储器的哪个位置),写操作循环次数,DMA启动等。
寄存器配置模块将配置信息分发至对应的模块之后,片上总线启动DMA,DMA控制器开始传输数据,缓存模块将接收的原始数据发送至选择器模块,选择器模块可以接收到缓存模块发送的原始数据,及接收到寄存器配置模块发送的配置信息携带的填充数据。
填充位置识别模块接收所述寄存器配置模块发送的所述配置信息并根据配置信息向拼接数据生成模块输出拼接指示信息,拼接指示信息用于指示拼接数据生成模块收到了哪种数据(收到的数据中哪些是原始数据,哪些是填充数据),当前需要生成哪种目标拼接数据,每种目标拼接数据的哪些部分是填充数据,哪些部分是原始数据,如何将原始数据和填充数据进行拼接(在原始数据的哪个方向拼接填充数据)等。填充位置识别模块并根据配置信息生成选择信号,选择器模块根据选择信号向拼接数据模块输出相应的待拼接数据,其中,待拼接数据包括原始数据或填充数据,选择信号用于从多个发送至选择器模块的数据中选择一个并输出,例如,发送数据至选择器模块的数据有填充数据M和原始数据N,选择信号可以使选择器模块输出M或N,即从填充数据M和原始数据N中二选一输出。
拼接数据生成模块接收到待拼接数据和拼接指示信息后,根据待拼接数据及拼接指示信息对待拼接数据进行拼接,生成目标拼接数据。例如,拼接指示信息指示需要将原始数据(含有9个点的3×3图像,9个点分别是123456789)填充为目标拼接数据(5×3的图像数据),左右方向各1个填充数据,用0代表padding填充的位置,1代表原始数据的位置,则对待拼接数据进行拼接得到目标拼接数据的第一行指示信号为01110,0指示的位置放填充数据0,1指示的位置分别放原始数据123,即目标拼接数据的第一行为01230,以此类推,第二行为04560,第三行为07890,则3×3的图像数据变成了5×3的图像数据。需要说明的是,在一个时刻,选择器模块只能向拼接数据生成模块输出一种数据(要么是原始数据,要么是填充数据),假如某个时刻选择器模块根据选择信号输出的是原始数据,此时拼接数据生成模块中只有原始数据,而执行拼接还需要有填充数据,在下一个时刻,填充位置识别模块通过选择信号控制选择器模块向拼接数据生成模块输出对应的填充数据,此时拼接数据生成模块有了原始数据和填充数据可以进行数据的拼接。
本申请利用DMA控制器将原始数据与填充数据进行拼接得到目标拼接数据,填充数据仅是在DMA控制器内部传输,并不需要由外部存储器传输至DMA控制器,使得外部存储器不需要存储填充数据,DMA控制器与片上总线之间只需传输原始数据和配置信息,极大地降低了外部存储器的占用率,也降低了数据传输的时长,从而提高片上总线的利用率和系统整体性能。
进一步地,所述方法还包括:
所述拼接数据生成模块将所述目标拼接数据发送至与所述DMA控制器通信连接的计算模块。
计算模块可以是执行卷积操作的模块,计算模块与DMA控制器通信连接,得到目标拼接数据之后,拼接数据生成模块将目标拼接数据发送至计算模块,由于原始图像进行卷积操作后,卷积得到的特征图尺寸会小于原始图像,且一定程度上会使得原始信息丢失,因此在卷积操作之前通常需要对原始图像进行填充来确保卷积得到的尺寸与原始图像尺寸一致并防止信息丢失,而原始图像进行填充后图像面积会增大,导致图像存储效率和传输效率都降低,通过在DMA控制器内对原始数据进行填充得到目标拼接数据,再将目标拼接数据发送至卷积操作的模块,可以使得卷积得到的尺寸与原始图像尺寸一致,并使得卷积后的信息不会丢失,且保证了图像的存储效率和传输效率。
进一步地,在所述选择器模块接收所述缓存模块发送的原始数据之前,所述方法还包括:
所述缓存模块接收所述DMA读模块发送的原始数据,根据所述配置信息的位宽信息向所述选择器模块输出所述原始数据。
缓存模块是接收DMA读模块发送的原始数据,缓存模块是根据寄存器配置模块分发的配置信息中的位宽信息,向选择器模块输出原始数据的。需要说明的是,缓存模块可以是随机存取存储器(Random Access Memory,RAM)或FIFO存储器,FIFO存储器是一个先入先出的双口缓冲器,即第一个进入FIFO存储器内的数据会第一个被移出。原始数据被存在缓存模块后称为缓存数据,原始数据和缓存数据两者的位宽可能不同,例如,原始数据的位宽是30bit,缓存数据的位宽是60bit,则一个缓存数据就是两个原始数据的拼接。又例如,原始数据是含有9个点的3×3图像,9个点分别是123456789,图像第一行是123,第二行是456,第三行是789。原始数据的位宽是3个点,如果缓存数据的位宽是6个点,则缓存模块的第一个存储地址存放的是123456,缓存模块的第二个存储地址存放的是789xxx。
其中,所述根据所述配置信息的位宽信息向所述选择器模块输出所述原始数据,包括:
从所述配置信息中获取所述目标拼接数据的第一位宽;
获取所述所述填充数据的第二位宽;
计算所述第一位宽与所述第二位宽的位宽差值,向所述选择器模块输出所述位宽差值对应的原始数据。
例如,原始数据和缓存数据的位宽都是30bit,目标拼接数据的位宽是40bit,目标拼接数据对于原始数据是在原始数据的左右方向填充10bit,即填充数据的位宽为10bit,则缓存模块向选择器模块输出数据时,只需依次输出30bit的原始数据。又例如,若原始数据和缓存数据的位宽都是30bit,目标拼接数据的位宽是20bit,而且左右方向填充5bit,即填充数据的位宽为5bit,则缓存模块向选择器模块输出数据时,每次只有30bit中的15bit。
进一步地,在所述缓存模块接收所述DMA读模块发送的原始数据,根据所述配置信息的位宽信息向所述选择器模块输出所述原始数据之前,所述方法还包括:
所述DMA读模块根据所述配置信息读取外部存储器的原始数据,将所述原始数据发送至所述缓存模块。
由于寄存器配置模块分发给DMA读模块中的配置信息含有原始数据的地址,因此,DMA读模块可以根据配置信息中的地址信息从外部存储器中读取原始数据,再将将原始数据发送至缓存模块。
参照图2所示,为本申请DMA控制器的示意图。
DMA控制器包括寄存器配置模块、缓存模块、选择器模块、填充位置识别模块及拼接数据生成模块,所述寄存器配置模块分别与所述缓存模块、所述选择器模块、所述填充位置识别模块及所述拼接数据生成模块通信连接;
所述寄存器配置模块用于接收处理器发送的各个模块的配置信息,并将所述配置信息相应分发至所述选择器模块及所述填充位置识别模块;
所述选择器模块用于接收所述缓存模块发送的原始数据,及接收所述寄存器配置模块发送的所述配置信息携带的填充数据;
所述填充位置识别模块用于接收所述寄存器配置模块发送的所述配置信息并根据所述配置信息向所述拼接数据生成模块输出拼接指示信息,并根据所述配置信息生成选择信号以使所述选择器模块根据所述选择信号向所述拼接数据模块输出相应的待拼接数据,其中,所述待拼接数据包括所述原始数据或所述填充数据;
所述拼接数据生成模块用于根据所述待拼接数据及所述拼接指示信息生成目标拼接数据。
在一个实施例中,所述DMA控制器还包括DMA读模块,所述缓存模块还用于接收所述DMA读模块发送的原始数据,根据所述配置信息的位宽信息向所述选择器模块输出所述原始数据。
在一个实施例中,所述DMA读模块用于根据所述配置信息读取外部存储器的原始数据,将所述原始数据发送至所述缓存模块。
在一个实施例中,所述拼接数据生成模块还用于将所述目标拼接数据发送至与所述DMA控制器通信连接的计算模块。
在一个实施例中,所述根据所述配置信息的位宽信息向所述选择器模块输出所述原始数据,包括:
从所述配置信息中获取所述目标拼接数据的第一位宽;
获取所述所述填充数据的第二位宽;
计算所述第一位宽与所述第二位宽的位宽差值,向所述选择器模块输出所述位宽差值对应的原始数据。
如图3所示,本申请实施例提供了一种电子设备,包括处理器111、通信接口112、存储器113、通信总线114和DMA控制器115,其中,处理器111,通信接口112,存储器113通过通信总线114完成相互间的通信,存储器113,用于存放计算机程序,DMA控制器115包括寄存器配置模块、缓存模块、选择器模块、填充位置识别模块及拼接数据生成模块;
在本申请一个实施例中,处理器111,用于执行存储器113上所存放的程序时,实现如下步骤:
所述寄存器配置模块接收处理器发送的各个模块的配置信息,并将所述配置信息相应分发至所述选择器模块及所述填充位置识别模块;
所述选择器模块接收所述缓存模块发送的原始数据,及接收所述寄存器配置模块发送的所述配置信息携带的填充数据;
所述填充位置识别模块接收所述寄存器配置模块发送的所述配置信息并根据所述配置信息向所述拼接数据生成模块输出拼接指示信息,并根据所述配置信息生成选择信号以使所述选择器模块根据所述选择信号向所述拼接数据模块输出相应的待拼接数据,其中,所述待拼接数据包括所述原始数据或所述填充数据;
所述拼接数据生成模块根据所述待拼接数据及所述拼接指示信息生成目标拼接数据。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如下步骤:
寄存器配置模块接收处理器发送的各个模块的配置信息,并将所述配置信息相应分发至所述选择器模块及所述填充位置识别模块;
选择器模块接收所述缓存模块发送的原始数据,及接收所述寄存器配置模块发送的所述配置信息携带的填充数据;
填充位置识别模块接收所述寄存器配置模块发送的所述配置信息并根据所述配置信息向所述拼接数据生成模块输出拼接指示信息,并根据所述配置信息生成选择信号以使所述选择器模块根据所述选择信号向所述拼接数据模块输出相应的待拼接数据,其中,所述待拼接数据包括所述原始数据或所述填充数据;
拼接数据生成模块根据所述待拼接数据及所述拼接指示信息生成目标拼接数据。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
- 一种基于描述符的PCIE总线DMA控制器及数据传输控制方法
- 处理器系统,DMA控制电路,DMA控制方法,DMA控制器用控制方法,图形处理方法和图形处理电路
- 处理器系统,DMA控制电路,DMA控制方法,DMA控制器用控制方法,图形处理方法和图形处理电路