多通道直接存储器存取控制器.pdf

上传人:柴****2 文档编号:4758589 上传时间:2018-11-07 格式:PDF 页数:23 大小:1.53MB
返回 下载 相关 举报
摘要
申请专利号:

CN201210550249.0

申请日:

2012.12.17

公开号:

CN103064807A

公开日:

2013.04.24

当前法律状态:

授权

有效性:

有权

法律详情:

专利权人的姓名或者名称、地址的变更IPC(主分类):G06F 13/28变更事项:专利权人变更前:福建星网锐捷网络有限公司变更后:锐捷网络股份有限公司变更事项:地址变更前:350002 福建省福州市仓山区金山大道618号桔园州工业园19#楼变更后:350002 福建省福州市仓山区金山大道618号桔园州工业园19#楼|||授权|||实质审查的生效IPC(主分类):G06F 13/28申请日:20121217|||公开

IPC分类号:

G06F13/28

主分类号:

G06F13/28

申请人:

福建星网锐捷网络有限公司

发明人:

王瑶宝

地址:

350002 福建省福州市仓山区金山大道618号桔园州工业园19#楼

优先权:

专利代理机构:

北京同达信恒知识产权代理有限公司 11291

代理人:

黄志华

PDF下载: PDF下载
内容摘要

本发明公开了一种多通道DMA控制器,在DMA控制器中设置若干个DMA通道和数据传输单元,将数据传输的控制操作和数据搬运工作分离开来,由若干个DMA通道处理DMA数据传输的控制操作,各个DMA通道进行BD管理操作和生成传输指令操作,由一个数据传输单元处理全部的DMA数据传输的数据搬运工作,数据传输单元对来自若干个DMA通道的传输指令进行仲裁,根据仲裁得到的排序顺序,依次执行各个传输指令,在CPU内存和外设缓存之间传输数据,能够在DMA通道中形成数据传输的控制操作的流水作业,在数据传输单元中形成数据传输的数据搬运操作的流水作业,能够提高DMA控制器的数据传输速度,适用于高速数据传输的应用场景。

权利要求书

权利要求书一种多通道直接存储器存取DMA控制器,其特征在于,包括:若干个DMA通道和数据传输单元;
所述DMA通道,用于接收到来自中央处理器CPU的缓存标识符BD更新消息后,从CPU内存中读取BD,根据BD和外设缓存中的数据存储情况,生成传输指令;
所述数据传输单元,用于对来自若干个所述DMA通道的传输指令进行仲裁,根据仲裁得到的排序顺序,依次执行各个传输指令、在所述CPU内存和所述外设缓存之间传输数据。
根据权利要求1所述的多通道DMA控制器,其特征在于,所述传输指令包括:读指令;则,
所述DMA通道,具体包括:下行通道,用于在接收到来自CPU的BD更新消息后,从所述CPU内存中读取BD,根据读取的BD中的读取数据长度信息和所述外设缓存中所存储的已接收数据的数据量大小,生成所述读指令;
所述数据传输单元,具体包括:读数据模块,用于对来自若干个所述DMA通道的下行通道的读指令进行仲裁,根据仲裁得到的排序顺序,依次根据各个读指令从所述CPU内存中读出相应的数据,并将读出的数据发送给所述外设缓存。
根据权利要求2所述的多通道DMA控制器,其特征在于,所述下行通道,具体包括:
下行读BD模块,用于在接收到来自CPU的BD更新消息后,从所述CPU内存中读取若干个BD,并保存读取的若干个BD;
下行指令生成模块,用于根据所述下行读BD模块读取的BD中的读取数据长度信息和所述外设缓存中所存储的已接收数据的数据量大小,生成所述读指令。
根据权利要求3所述的多通道DMA控制器,其特征在于,所述下行指令生成模块,具体用于:执行读取当前BD操作、判断操作、生成读指令操作和发送读指令操作;其中,
读取当前BD操作:在当前时间片内,在所述下行指令生成模块中具有空闲存储空间的情况下,从所述下行读BD模块中获取一个BD作为当前BD;
判断操作:判断对比条件是否成立,对比条件为:对比当前BD中的读取数据长度信息所示的数据长度和所述下行指令生成模块中存储的已经对应生成读指令的各个BD中的读取数据长度信息所示的数据长度之和,是否小于所述外设缓存中与该DMA通道的下行通道相对应的存储空间中的空闲存储空间的大小,在判断对比条件成立的情况下,执行生成读指令操作,否则,继续等待,直到对比条件成立;
生成读指令操作:生成与当前BD对应的读指令,在读指令中携带当前BD中的读取数据长度信息和当前BD中的读取数据的地址信息;并在所述下行指令生成模块中保存当前BD;
发送读指令操作:将生成的与当前BD对应的读指令发送给所述读数据模块。
根据权利要求4所述的多通道DMA控制器,其特征在于,所述读数据模块,具体用于:
对于仲裁得到的排序顺序中的当前读指令,根据当前读指令中的地址信息和读取数据长度信息,从所述CPU内存中相应地址的存储空间中读出相应长度的数据,并将读出的数据发送到所述外设缓存中与发送当前读指令的DMA通道相对应的存储空间中。
根据权利要求4所述的多通道DMA控制器,其特征在于,所述读数据模块,还用于:对于仲裁得到的排序顺序中的当前读指令,轮询到当前读指令时,向发送当前读指令的DMA通道的下行通道反馈读响应;在从所述CPU内存中读出数据并发送给所述外设缓存后,还向发送当前读指令的DMA通道的下行通道反馈读完成响应;则,
所述下行通道,还包括:下行回写模块;其中,
所述下行指令生成模块,还用于:在接收到来自所述读数据模块的读响应之后,在所述下行指令生成模块中保存当前BD;在接收到来自所述读数据模块的读完成响应之后,从所述下行指令生成模块保存的BD中取出一个BD发送给所述下行回写模块;
所述下行回写模块,用于:将接收到的BD中的控制权信息改写为CPU,将改写后的BD发送给所述CPU内存。
根据权利要求6所述的多通道DMA控制器,其特征在于,所述下行回写模块,具体用于:
保存改写后的BD,在判断所述下行回写模块中存储有改写后的BD的情况下,对预定的回写周期进行计时;在计时周期内,在所保存的改写后BD的数量大于或等于预定数量的情况下,将预定数量的改写后的BD作为待发送的BD,将待发送的BD发送给所述CPU内存,在所保存的改写后的BD的数量小于预定数量的情况下,在计时到时后,将所保存的改写后的BD作为待发送的BD,将待发送的BD发送给所述CPU内存。
根据权利要求1所述的多通道DMA控制器,其特征在于,所述传输指令包括:写指令;则,
所述DMA通道,具体包括:上行通道,用于接收到来自CPU的BD更新消息后,从所述CPU内存中读取BD,根据所述外设缓存中所存储的待发送数据的数据量大小和读取的BD中的待写入数据的地址信息,生成所述写指令;
所述数据传输单元,具体包括:写数据模块,用于对来自若干个所述DMA通道的上行通道的写指令进行仲裁,根据仲裁得到的排序顺序,依次根据各个写指令从所述外设缓存中读出相应的数据,并将读出的数据发送给所述CPU内存。
根据权利要求8所述的多通道DMA控制器,其特征在于,所述上行通道,具体包括:
上行读BD模块,用于在接收到来自CPU的BD更新消息后,从所述CPU内存中读取若干个BD,并保存读取的若干个BD;
上行指令生成模块,用于根据所述外设缓存中所存储的待发送数据的数据量大小和所述上行读BD模块读取的BD中的待写入数据的地址信息,生成所述写指令。
根据权利要求9所述的多通道DMA控制器,其特征在于,所述上行指令生成模块,具体用于:
在当前时间片内,在所述上行指令生成模块中具有空闲存储空间的情况下,从所述上行读BD模块中获取一个BD作为当前BD;
生成与当前BD对应的写指令,在生成的写指令中携带所述外设缓存中待发送的数据的数据长度信息和当前BD中的CPU内存中待写入数据的地址信息;
在所述上行指令生成模块中保存当前BD;
将生成的写指令发送给所述写数据模块。
根据权利要求10所述的多通道DMA控制器,其特征在于,所述写数据模块,具体用于:
对于仲裁得到的排序顺序中的当前写指令,根据当前写指令中的数据长度信息,从所述外设缓存中与发送当前写指令的DMA通道相对应的存储控制中读出相应长度的数据,并将读出的数据发送到当前写指令中的地址信息所指的所述CPU内存中的相应存储空间中。
根据权利要求11所述的多通道DMA控制器,其特征在于,所述写数据模块,还用于:轮询到当前写指令时,向发送当前写指令的DMA通道的上行通道反馈写响应;在从所述外设缓存中读出数据并发送到所述CPU内存后,还向发送当前写指令的DMA通道的上行通道反馈写完成响应;则,
所述上行通道,还包括:上行回写模块;其中,
所述上行指令生成模块,还用于:在接收到来自所述写数据模块的写响应之后,在所述上行指令生成模块保存当前BD;在接收到来自所述写数据模块的写完成响应之后,从所述上行指令生成模块保存的BD中取出一个BD发送给所述上行回写模块;
所述上行回写模块,用于:将接收到的BD中的控制权信息改写为CPU,将所述写指令中的数据长度信息写入到BD中,将改写后的BD发送给所述CPU内存。
根据权利要求12所述的多通道DMA控制器,其特征在于,所述上行回写模块,具体用于:
保存改写后的BD;在判断所述上行回写模块中存储有改写后的BD的情况下,对预定的回写周期进行计时;在计时周期内,在所保存的改写后BD的数量大于或等于预定数量的情况下,将预定数量的改写后的BD作为待发送的BD,将待发送的BD发送给所述CPU内存,在所保存的改写后的BD的数量小于预定数量的情况下,在计时到时后,将所保存的改写后的BD作为待发送的BD,将待发送的BD发送给所述CPU内存。

说明书

说明书多通道直接存储器存取控制器
技术领域
本发明涉及数据通信领域,具体地,涉及一种多通道直接存储器存取控制器。
背景技术
直接存储器存取(DMA,Direct Memory Access)是一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,整个数据传输操作在DMA控制器的控制下进行,在传输过程中不需要中央处理器(CPU,Central ProcessUnit)的干预,CPU可以进行其他工作,从而极大地提高了CPU的运行效率。
图1a是现有技术中典型的DMA系统的结构框图。CPU、DMA控制器、片内外存储器(包括片内RAM、RAM控制器、片内Flash、Flash控制器、片外存储器、存储器控制器)和高速I/O连接在高速总线上,各种低速外设(包括低速外设1、低速外设2、低速外设3)连接在低速总线上,并且通过总线桥和高速总线相连。总线上的设备如果要进行DMA传输,则向DMA控制器发起请求,DMA控制器在获得总线使用权后,控制在CPU内存和其它设备进行数据传输,并在传输结束后归还总线使用权。DMA传输过程中无需CPU参与,节省CPU的额外开销。
中国专利(申请号:200910080751,公开号:101504633)公开了一种多通道DMA控制器,该DMA控制器包括多个DMA通道模块和一个多路复用模块,每个DMA通道模块分别包括一个数据缓冲存储及其控制模块和一组控制寄存器,所有通道的数据缓冲存储及其控制模块都连接到一个多路复用模块。这种DMA控制器可以在一定程度上降低片上系统上总线仲裁块和存储单元的开销,并提高系统的重用性。
但是,在该中国专利的技术方案中,每个DMA通道均执行数据控制和数据传输工作,具体地,DMA通道对需读取的数据生成读取数据请求,并向CPU内存发送读取数据请求后,必须等到CPU内存返回所请求读取的数据,才能进行下一个生成读取数据请求的操作,但是,CPU内存返回数据通常会存在时延,这就造成数据传输速度慢的问题,导致该DMA控制器不适合高速数据传输的应用场景。
发明内容
有鉴于此,本发明实施例提供了一种多通道DMA控制器,用以解决现有技术中的DMA控制器的传输速度慢、不适合高速数据传输应用场景的问题。
本发明实施例技术方案如下:
一种DMA控制器,包括:若干个DMA通道和数据传输单元;所述DMA通道,用于接收到来自中央处理器CPU的缓存标识符(BD,Buffer Descriptor)更新消息后,从CPU内存中读取BD,根据BD和外设缓存中的数据存储情况,生成传输指令;所述数据传输单元,用于对来自若干个所述DMA通道的传输指令进行仲裁,根据仲裁得到的排序顺序,依次执行各个传输指令、在所述CPU内存和所述外设缓存之间传输数据。
本发明实施例通过在DMA控制器中设置若干个DMA通道和数据传输单元,将数据传输的控制操作和数据传输的数据搬运工作分离开来,也即由若干个DMA通道处理DMA数据传输的控制操作,具体地,各个DMA通道进行BD管理操作和生成传输指令操作,由一个数据传输单元处理全部的DMA数据传输的数据搬运工作,具体地,数据传输单元对来自若干个DMA通道的传输指令进行仲裁,根据仲裁得到的排序顺序,依次执行各个传输指令,在CPU内存和外设缓存之间传输数据,可见,数据传输单元执行的数据控制操作不必依赖于数据传输单元执行的数据搬运操作,能够在DMA通道侧形成数据传输的控制操作的流水作业,数据传输单元依次对来自若干个DMA通道的传输指令进行处理,在数据传输单元侧形成数据传输的数据搬运操作的流水作业,进而能够提高DMA控制器的数据传输速度,能够适用于高速数据传输的应用场景。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
图1a是现有技术中典型的DMA系统的结构框图;
图1b是本发明实施例提供的多通道DMA控制器的结构框图;
图1c是图1b所示多通道DMA控制器的工作流程图;
图2是图1b所示的多通道DMA控制器的优选结构框图;
图3是图2所示的多通道DMA控制器的优选结构框图;
图4是图3中的下行指令生成模块的工作流程图;
图5是图3中的读数据模块对下行数据的处理工作流程图;
图6是图3中的下行回写模块的工作流程图;
图7是图2所示的多通道DMA控制器的另一优选结构框图;
图8是图7中的上行指令生成模块的工作流程图;
图9是图7中的写数据模块对上行数据的处理工作流程图;
图10是图7中的上行回写模块的工作流程图。
具体实施方式
以下结合附图对本发明的实施例进行说明,应当理解,此处所描述的实施例仅用于说明和解释本发明,并不用于限定本发明。
本发明实施例针对现有技术中的DMA控制器数据传输速度慢、不适用于高速数据传输的应用场景的问题,提出一种多通道DMA控制器,以解决该问题。本发明实施例将DMA数据传输的控制操作和数据搬运工作分离开来,在DMA控制器中设置若干个DMA通道和数据传输单元,DMA通道处理DMA数据传输的控制操作,即生成用于指示如何进行数据搬运的传输指令,由数据传输单元处理DMA数据传输的数据搬运工作,即根据传输指令进行具体的数据搬运操作,DMA通道的控制操作不依赖于数据传输单元的数据搬运工作,能够在DMA通道侧形成控制操作的流水作业,数据传输单元依次对来自若干个DMA通道的传输指令进行处理,在数据传输单元侧形成数据搬运操作的流水作业,进而能够提高DMA控制器的数据传输速度,能够适用于高速数据传输的应用场景。
下面详细说明本发明实施例提供的多通道DMA控制器。
图1b示出了本发明实施例提供的多通道DMA控制器的结构框图,该多通道DMA控制器包括若干个DMA通道11和数据传输单元12。
DMA通道11,用于接收到来自CPU的BD更新消息后,从CPU内存中读取BD,根据BD和外设缓存中的数据存储情况,生成传输指令;
数据传输单元12,连接至DMA通道11,用于对来自若干个DMA通道的传输指令进行仲裁,根据仲裁得到的排序顺序,依次执行各个传输指令、在CPU内存和外设缓存之间传输数据。
图1c所示多通道DMA控制器的工作流程图,如图1c所示,包括:
步骤101、若干个DMA通道11分别接收到来自CPU的BD更新消息后,从CPU内存中读取BD,并分别根据读取的BD和外设缓存中的数据存储情况,生成传输指令;
步骤102、数据传输单元12接收来自各个DMA通道11的传输指令,对接收到的若干个传输指令进行仲裁,得到对传输指令的排序顺序;
步骤103、数据传输单元12根据仲裁得到的排序顺序,依次执行各个传输指令、在CPU内存和外设缓存之间传输数据。
通过如图1b所示的多通道DMA控制器和图1c所示的工作原理,能够将DMA数据传输的控制操作和数据传输的数据搬运工作分离开来,也即由若干个DMA通道处理数据传输的控制操作,由数据传输单元处理DMA数据传输的数据搬运工作,DMA通道的控制操作不依赖于数据传输单元的数据搬运工作,并且数据传输单元对来自若干个DMA通道的传输指令进行仲裁,根据仲裁得到的排序顺序,依次执行各个传输指令所指示的数据搬运操作,DMA通道不必等数据传输单元的数据搬运操作结束后再进行下一次控制操作,能够在DMA通道侧形成控制操作的流水作业,以及在数据传输单元侧形成数据搬运操作的流水作业,进而能够提高DMA控制器的数据传输速度,能够适用于高速数据传输的应用场景。
对图1b所示装置的工作原理进行详细说明之前,先对BD进行说明。
BD是一个用于描述数据读写操作的控制信息的数据结构,若干个BD在CPU内存中占据一片连续的存储空间,BD的结构如表1所示,包括数据地址、数据长度、数据片是否为数据包的起始部分的指示(Sop)、数据片是否为数据包的结束部分的指示(Eop)、错误信息指示(Err)、控制权信息指示(Owner)、BD是否有效的指示(Valid)。
表1
数据地址数据长度SOPEOPErrOwnervalid
CPU将总线控制权交给多通道DMA控制器之前,会将待读取数据的地址和数据长度分别写入BD的数据地址域和数据长度域中,并将Owner域改写为表示多通道DMA控制器的信息,然后向多通道DMA控制器发送BD更新消息,多通道DMA控制器接收到BD更新消息后,从CPU内存中读取BD,根据BD中Owner域中的信息判断总线控制权属于自身,从而能够根据BD中的数据地址域和数据长度域中的信息从CPU内存中读取数据。多通道DMA控制器向CPU内存中写数据时,根据BD中数据地址域中的信息将数据写入CPU内存中,并将存入数据的数据长度写入BD的数据长度域中,以及将Owner域改写为表示CPU的信息,将改写后的BD发送给CPU内存,CPU通过监控CPU内存中新存入的BD的Owner域的信息,得知总线控制权重新回到CPU。
具体地,DMA通道11用于分别对DMA数据传输的下行数据的控制操作和上行数据的控制操作进行处理,下行数据为从CPU内存读出并写入到外设缓存中的数据,上行数据为从外设缓存读出并写入到CPU内存中的数据,相应地,传输指令也分为读指令和写指令,数据传输单元12也相应地根据读指令对下行数据进行数据搬运操作、根据写指令对上行数据进行数据搬运操作。
图2示出了图1b所示的多通道DMA控制器的优选结构框图,DMA通道11中具体包括下行通道111和上行通道112,数据传输单元12包括读数据模块121和写数据模块122。
下行通道111,用于接收到来自CPU的BD更新消息后,从CPU内存中读取BD,根据读取的BD中的读取数据长度信息和外设缓存中所存储的已接收数据的数据量大小,生成读指令;
读数据模块121,连接至若干个DMA通道11的下行通道111,用于对来自若干个DMA通道11的下行通道111的读指令进行仲裁,根据仲裁得到的排序顺序,依次根据各个读指令从CPU内存中读出相应的数据,并将读出的数据发送给外设缓存。
上行通道112,用于接收到来自CPU的BD更新消息后,从CPU内存中读取BD,根据外设缓存中所存储的待发送数据的数据量大小和读取的BD中的待写入数据的地址信息,生成写指令;
写数据模块122,连接至若干个DMA通道11的上行通道112,用于对来自若干个DMA通道的上行通道112的写指令进行仲裁,根据仲裁得到的排序顺序,依次根据各个写指令从外设缓存中读出相应的数据,并将读出的数据发送给CPU内存。
通过在DMA通道中设置上行通道和下行通道,以及在数据传输单元中设置读数据模块和写数据模块,能够将上行数据处理和下行数据处理区分开来,并且对于下行数据和上行数据都将数据传输的控制操作和数据搬运操作区分开来,能够有效地在DMA通道侧分别形成上行数据和下行数据的控制操作的流水作业,以及在数据传输单元侧分别形成上行数据和下行数据的数据搬运操作的流水作业,进而能够提高DMA控制器的数据传输速度,能够适用于高速数据传输的应用场景。
并且,由于本发明实施例中根据下行数据和上行数据来分别设置相应的功能单元,使得本发明实施提供的DMA控制器具有很好的可裁剪性,即根据应用场景的不同,当只需要DMA控制器处理下行数据时,可以仅在DMA通道中设置下行通道、在数据传输单元中设置读数据模块,当只需要DMA控制器处理上行数据时,可以仅在DMA通道中设置上行通道、在数据传输单元中设置写数据模块,当需要DMA控制器处理下行数据和上行数据时,可设置如图2所示的DMA控制器。
下面分别详细说明图2所示的多通道DMA控制器对下行数据和上行数据的处理。
(一)、下行数据处理
图3示出了图2所示多通道DMA控制器优选结构框图,该多通道DMA控制器包括:下行通道111和读数据模块121,下行通道111包括:下行读BD模块1111、下行指令生成模块1112和下行回写模块1113。
1、下行读BD模块1111,用于接收到来自CPU的BD更新消息后,从所述CPU内存中读取若干个BD,并保存读取的若干个BD。
具体地,下行读BD模块1111接收到来自CPU的BD更新消息后,向CPU内存发送下行读BD请求,下行读BD请求中携带有请求读取的BD的数量,其中,该请求读取的BD的数量为:来自CPU的BD更新消息中指示的可读BD的数量、BD环中当前BD指针至BD环尾所示的BD的数量、以及预设的读取BD的数量这三者中的数量最小者的BD数量,根据应用场景的不同,预设的读取BD的数量也不同,因此,可见每次所请求读取的BD的数量是不定的,可以是一条、也可以是多条;并,接收来自CPU内存针对该下行读BD请求的若干个BD,并保存接收到的若干个BD。
2、下行指令生成模块1112,用于根据下行读BD模块1111读取的BD中的读取数据长度信息和外设缓存中所存储的已接收数据的数据量大小,生成读指令;
具体地,下行指令生成模块1112执行以下操作:读取当前BD操作、判断操作、生成读指令操作和发送读指令操作;其中,
(1)、读取当前BD操作包括:在当前时间片内,在下行指令生成模块1112中具有空闲存储空间的情况下,下行指令生成模块1112从下行读BD模块1111中获取一个BD作为当前BD;在下行指令生成模块1112中没有空闲存储空间的情况下,下行指令生成模块1112继续等待,直到具有空闲存储空间的情况下,从下行读BD模块1111中获取一个BD作为当前BD;
(2)、判断操作包括:判断对比条件是否成立,对比条件为:对比当前BD中的读取数据长度信息所示的数据长度和下行指令生成模块1112中存储的已经对应生成读指令的各个BD中的读取数据长度信息所示的数据长度之和,是否小于外设缓存中与该DMA通道的下行通道相对应的存储空间中的空闲存储空间的大小,在判断对比条件成立的情况下,执行生成读指令操作,否则,继续等待,直到对比条件成立,即等待外设缓存中的数据被读取出去,外设缓存中的存储空间的得到释放,使得对比条件成立;
(3)、生成读指令操作包括:生成与当前BD对应的读指令,在读指令中携带当前BD中的读取数据长度信息和当前BD中的读取数据的地址信息;并,保存当前BD,优选地,可以采用先进先出队列来保存已对应生成了读指令的BD;
(4、)发送读指令操作:将生成的对应当前BD的读指令发送给读数据模块121。
3、读数据模块121,连接至各个下行通道111的下行指令生成模块1112,用于对于仲裁得到的排序顺序中的当前读指令,根据当前读指令中的地址信息和读取数据长度信息,从CPU内存中相应地址的存储空间中读出相应长度的数据,并将读出的数据发送到外设缓存中与发送当前读指令的DMA通道相对应的存储空间中;
具体地,读数据模块121对来自若干个DMA通道11的下行通道111的读指令进行仲裁,例如根据轮叫(Round Robin)调度的原则来仲裁,对于仲裁得到的排序顺序中的当前读指令,根据当前读指令中的地址信息和读取数据长度信息,向CPU内存发送读数据请求,读数据请求中包括当前读指令中的地址信息和读取数据长度信息;接收来自CPU内存针对读数据请求的数据包,并将接收到的数据发送到外设缓存中与发送当前读指令的DMA通道相对应的存储空间中;
并且,轮询到当前读指令时,读数据模块121向发送当前读指令的DMA通道的下行通道(即下行通道111的下行指令生成模块1112)反馈读响应;在从CPU内存中读出数据并发送给外设缓存后,还向发送当前读指令的DMA通道的下行通道(即下行通道111的下行指令生成模块1112)反馈读完成响应;
相应地,下行指令生成模块1112,还用于:在接收到来自读数据模块121的读响应之后,保存当前BD;在接收到来自读数据模块121的读完成响应之后,从下行指令生成模块1112保存的BD中取出一个BD发送给下行回写模块1113;优选地,如上所述,下行指令生成模块1112通过先进先出队列保存已经对应生成了读指令的BD,此处,从先进先出队列的队头取出一个BD发送给下行回写模块1113。
4、下行回写模块1113,用于:将接收到的BD中的控制权信息改写为CPU,将改写后的BD发送给CPU内存。具体地,下行回写模块1113保存改写后的BD,在判断下行回写模块1113中存储有改写后的BD的情况下,对预定的回写周期进行计时;在计时周期内,在所保存的改写后的BD的数量大于或等于预定数量的情况下,将预定数量的改写后的BD作为待发送的BD,将待发送的BD发送给CPU内存,在所保存的改写后的BD的数量小于预定数量的情况下,在计时到时候,将所保存的改写后的BD作为待发送的BD,将待发送的BD发送给CPU内存。
图4示出了图3中的下行指令生成模块1112的工作流程图,也即图4示出了下行通道进行下行数据传输的控制操作的工作原理,包括如下处理过程:
步骤401、下行读BD模块1111在接收到来自CPU的BD更新消息后,从CPU内存中读取若干个BD,具体地,下行读BD模块1111向CPU内存发送下行读BD请求,下行读BD请求中携带有请求读取的BD的数量;如上所述,BD的数量可以是一个BD或者多个BD;下行读BD模块1111接收来自CPU内存的针对该下行读BD请求的若干个BD,并保存接收到的若干个BD;下行读BD模块1111批量读取BD,能够减少占用的总线带宽,提高处理效率;
步骤402、下行指令生成模块1112在当前时间片内,在下行指令生成模块1112中具有空闲存储空间的情况下,从下行读BD模块1111中获取一个BD作为当前BD;具体地,在当前时间片内,下行指令生成模块1112判断下行读BD模块1111中存储有BD,且下行指令生成模块1112中有空闲存储空间的情况下,从下行读BD模块1111中获取一个BD作为当前BD;
步骤403、下行指令生成模块1112根据当前BD中的读取数据长度信息和外设缓存中所存储的已接收数据的数据量大小,生成读指令;
具体地,判断对比条件成立的情况下,即当前BD中的读取数据长度信息所示的数据长度和下行指令生成模块1112中存储的已经对应生成读指令的各个BD中的读取数据长度信息所示的数据长度之和,小于外设缓存中与该DMA通道的下行通道相对应的存储空间中的空闲存储空间的大小的情况下,生成与当前BD对应的读指令,在读指令中携带当前BD中的读取数据长度信息和当前BD中的读取数据的地址信息,处理进行到步骤404;
判断对比条件不成立的情况下,在当前BD中的读取数据长度信息所示的数据长度和下行指令生成模块1112中存储的已经对应生成读指令的各个BD中的读取数据长度信息所示的数据长度之和,大于或等于所述外设缓存中与该DMA通道的下行通道相对应的存储空间中的空闲存储空间的大小的情况下,处理返回到步骤403,直至对比条件成立;
在对比条件中,需要判断:当前BD中的读取数据长度信息所示的数据长度和下行指令生成模块1112中存储的已经对应生成读指令的各个BD中的读取数据长度信息所示的数据长度之和,与外设缓存中与该DMA通道的下行通道相对应的存储空间中的空闲存储空间的大小的对比关系,其原因是:如下步骤405所述,读数据模块121在轮询到一个读指令后,会给发送该读指令的下行指令生成模块1112反馈读响应,读数据模块121此时并未从CPU内存中读取数据,因为读数据模块121等待CPU内存返回数据是需要一定时间的,所以,当读数据模块121向下行指令生成模块1112发送读响应后,在下行指令生成模块1112中与该读响应对应的读指令所指示的数据并未真正读出,此时,下行指令生成模块1112应当保存与该读响应对应的BD,即保存已经对应生成了读指令的BD;所以,在下行指令生成模块1112生成读指令时,要判断待搬运的数据的长度是否要小于外设缓存中与该DMA通道的下行通道相对应的存储空间中的空闲存储空间的大小,而待搬运的数据的长度就包括当前BD中的读取数据长度和已经对应生成读指令的各个BD中的读取数据长度之和;
步骤404、下行指令生成模块1112将生成的对应当前BD的读指令发送给读数据模块121,以使读数据模块121根据读指令进行数据搬运操作;
步骤405;下行指令生成模块1112在接收到来自读数据模块121的读响应之后,保存当前BD,优选地,保存BD的缓存队列可以是先进先出队列,其中读响应是读数据模块121对轮询到下行指令生成模块1112发送的读指令时,读数据模块121向下行指令生成模块1112反馈的;处理返回步骤403。
图5示出了图3中读数据模块121对下行数据的处理工作流程图,即图5示出了读数据模块121对下行数据进行数据搬运的工作原理图,包括如下处理步骤:
步骤501、读数据模块121对来自若干个DMA通道11的下行通道111的读指令进行仲裁;优选地,可以采用RR调度进行仲裁,具体可根据若干个DMA通道11的排序顺序对读指令进行排序得到排序顺序,也即该排序顺序与若干个DMA通道11的排序顺序一致;
步骤502、读数据模块121对于仲裁得到的排序顺序中的当前读指令,根据当前读指令中的地址信息和读取数据长度信息,从CPU内存中相应地址的存储空间中读出相应长度的数据;具体地,读数据模块121向CPU内存发送读数据请求,读数据请求中包括当前读指令中的地址信息和读取数据长度信息;并向发送当前读指令的DMA通道的下行通道的下行指令生成模块1112反馈读响应;
步骤503、读数据模块121将读出的数据发送到外设缓存中与发送当前读指令的DMA通道相对应的存储空间中,具体地,读数据模块121接收来自CPU内存的针对读数据请求的数据包,并将接收到的数据发送到外设缓存中与发送当前读指令的DMA通道相对应的存储空间中;处理返回步骤501。
在上述处理过程中,下行读BD模块1111从CPU内存中批量读取若干个BD并保存读取的BD,以便于下行指令生成模块1112逐一取出BD并根据BD来生成读指令,以使读数据模块121根据读指令进行数据搬运工作;并且,下行指令生成模块1112根据读数据模块121反馈的读响应,保存与读响应相应的BD后,根据下一个BD生成读指令,使得下行指令生成模块1112执行的生成读指令的操作不依赖于读数据模块121是否将数据从CPU内存中读出,能够形成对下行数据的控制操作的流水作业;以及,读数据模块121对来自若干个DMA通道的下行通道的读指令进行仲裁,根据仲裁得到的排序顺序,依次根据各个读指令进行数据搬运操作,能够形成对下行数据的数据搬运操作的流水作业;从而能够提高下行DMA数据传输的传输速度,能够适用于高速下行数据传输的应用场景。
在上述下行数据传输的工作原理的基础上,对于采用BD环的应用场景中,DMA数据传输还包括下行BD回写的处理过程。
这里先说明BD环的结构及其作用进行说明。BD环是由若干个BD组成的首尾相接的环状结构,每个BD的结构可以如上表1所示,BD环在CPU内存中占据一片连续的存储空间,下行读BD模块1111从CPU内存中读取了若干个BD后,下行指令生成模块1112根据各个BD依次生成读指令,读数据模块121读取数据后,下行DMA通道111应当对BD进行改写,将BD中的Owner域改写为表示CPU的信息,然后将改写后的BD发送回CPU内存中,以使CPU监测到总线控制权的变化。
图6示出了图3中的下行回写模块1113的工作流程图,也即图6示出了对下行数据的BD回写的工作原理,包括如下处理过程:
步骤601、下行指令生成模块1112接收来自读数据模块121的读完成响应,读完成响应是读数据模块121轮询处理完下行指令生成模块1112发送的读指令,也即从CPU内存中读出数据并发送给外设缓存后,向下行指令生成模块1112反馈的;
步骤602、下行指令生成模块1112从下行指令生成模块1112保存的BD中取出一个BD发送给下行回写模块1113,优选地,从保存BD的先进先出的队列中取出排在队头的一个BD发送给下行回写模块1113;
步骤603、下行回写模块1113将接收到的BD中的控制权信息改写为CPU,将改写后的BD发送给CPU内存;
具体地,下行回写模块1113根据计时机制来发送改写后的BD;下行回写模块1113将接收到的BD中的控制权信息改写为CPU,保存改写后的BD;下行回写模块1113判断自身的存储空间中存储有改写后的BD的情况下,对预定的回写周期进行计时;在计时周期内,在所保存的改写后BD的数量大于或等于预定数量的情况下,将预定数量的改写后的BD作为待发送的BD,将待发送的BD发送给CPU内存,在所保存的改写后的BD的数量小于预定数量的情况下,在计时到时后,将所保存的改写后的BD作为待发送的BD,将待发送的BD发送给CPU内存。
通过上述处理过程,下行回写模块1113能够批量地回写BD,能够减少回写BD的次数,减少由于回写BD所占用的总线带宽,从而提高DMA数据传输的速度。并且,引入计时机制在向CPU内存发送改写后的BD,能够在改写后的BD的数量大于或等于预定数量时,及时地将预定数量的改写后的BD发送给CPU内存,能够避免下行通道111中的改写后的BD的数量瞬间增加过多时造成BD拥塞或BD丢失,在改写后的BD的数量小于预定数量时,在计时到时后,将改写后的BD发送给CPU内存,避免改写后的BD的数量长期小于预定数量的情况下,无法向CPU返回改写后的BD,造成CPU监测等待回写的BD的时间过长的问题,能够使CPU及时地监测到总线控制权变化的情况。
(二)上行数据处理
图7示出了图2所示多通道DMA控制器优选结构框图,该多通道DMA控制器包括:上行通道112和写数据模块122,上行通道112包括:上行读BD模块1121、上行指令生成模块1122和上行回写模块1123。
上行读BD模块1121,用于在接收到来自CPU的BD更新消息后,从所述CPU内存中读取若干个BD,并保存读取的若干个BD;具体地,上行读BD模块1121向CPU内存发送上行读BD请求,上行读BD请求中携带有请求读取的BD的数量;接收来自CPU内存针对该上行读BD请求的若干个BD;
上行指令生成模块1122,用于根据外设缓存中所存储的待发送数据的数据量大小和上行读BD模块1121读取的BD中的待写入数据的地址信息,生成所述写指令;具体地,在当前时间片内,上行指令生成模块1122从上行读BD模块1121中获取一个BD作为当前BD,根据外设缓存中存储的待发送数据的数据量大小生成写指令,在生成的写指令中携带外设缓存中待发送的数据的数据长度信息和当前BD中的CPU内存中待写入数据的地址信息;保存当前BD;将生成的写指令发送给写数据模块122。
写数据模块122,用于对于仲裁得到的排序顺序中的当前写指令,根据当前写指令中的数据长度信息,从外设缓存中与发送当前写指令的DMA通道相对应的存储控制中读出相应长度的数据,并将读出的数据发送到当前写指令中的地址信息所指的所述CPU内存中的相应存储空间中;并且,轮询到当前写指令时,向发送当前写指令的DMA通道的上行通道(即上行通道112的上行指令生成模块1122)反馈写响应;在从外设缓存中读出数据并发送到CPU内存后,还向发送当前写指令的DMA通道的上行通道(即上行通道112的上行指令生成模块1122)反馈写完成响应;
上行指令生成模块1123,还用于:在接收到来自写数据模块122的写响应之后,保存当前BD;在接收到来自写数据模块122的写完成响应之后,从上行指令生成模块1122保存的BD中取出一个BD发送给上行回写模块1123;
上行回写模块1123,用于:将接收到的BD中的控制权信息改写为CPU,将写指令中的数据长度信息写入到BD中,将改写后的BD发送给CPU内存;具体地,上行回写模块1123保存改写后的BD,在判断上行回写模块1123中存储有改写后的BD的情况下,对预定的回写周期进行计时;在计时周期内,在所保存的改写后的BD的数量大于或等于预定数量的情况下,将预定数量的改写后的BD作为待发送的BD,将待发送的BD发送给CPU内存,在所保存的改写后的BD的数量小于预定数量的情况下,在计时到时后,将所保存的改写后的BD作为待发送的BD,将待发送的BD发送给CPU内存,即将待发送的BD发送给调度单元13。
图8示出了图7中上行指令生成模块1122的工作流程图,也即图8示出了上行通道进行上行数据传输的控制操作的工作原理,包括如下处理过程:
步骤801、上行读BD模块1121接收到来自CPU的BD更新消息后,从CPU内存中读取若干个BD,并保存读取的若干个BD;具体地,上行读BD模块1121向CPU内存发送上行读BD请求,上行读BD请求中携带有请求读取的BD的数量;如上所述,BD的数量可以是一个,也可以是多个;上行读BD模块1121接收来自CPU内存的针对该上行读BD请求的若干个BD,并保存接收到的若干个BD;
步骤802、在当前时间片内,在上行指令生成模块1122中具有空闲存储空间的情况下,上行指令生成模块1122从上行读BD模块1121中获取一个BD作为当前BD;具体地,上行指令生成模块1122判断上行读BD模块1121中存储有BD,且上行指令生成模块1122中有空闲存储空间的情况下,在当前时间片内,从上行读BD模块1121中获取一个BD作为当前BD;
步骤803、上行指令生成模块1122生成与当前BD对应的写指令,在生成的写指令中携带外设缓存中待发送的数据的数据长度信息和当前BD中的CPU内存中待写入数据的地址信息;
步骤804、上行指令生成模块1122将生成的写指令发送给写数据模块122,以使写数据模块122根据写指令进行数据搬运操作;
步骤805、上行指令生成模块1122在接收到来自写数据模块122的写响应之后,保存当前BD,保存BD的缓存队列是先进先出队列,其中写响应是写数据模块122对轮询到上行指令生成模块1122发送的写指令时,写数据模块122向上行指令生成模块1122反馈的;处理返回步骤803。
图9示出了图7中写数据模块122对上行数据的处理工作流程图,即图9示出了写数据模块122对上行数据进行数据搬运的工作原理图,包括如下处理步骤:
步骤901、写数据模块122对来自若干个DMA通道11的上行通道112的写指令进行仲裁,优选地,可以采用RR调度进行仲裁,得到对读指令的排序顺序;
步骤902、写数据模块122对于仲裁得到的排序顺序中的当前写指令,向发送当前写指令的DMA通道的上行通道的上行指令生成模块1122发送写响应;
步骤903、写数据模块122根据当前写指令中的数据长度信息,从外设缓存中与发送当前写指令的DMA通道相对应的存储空间中读出相应长度的数据,将读出的数据发送给CPU内存,处理返回步骤901。
在上述处理过程中,上行读BD模块1121从CPU内存中批量读取BD并保存读取的BD,以便于上行指令生成模块1122逐一取出BD并根据BD来生成写指令,以使写数据模块122根据写指令进行数据搬运工作,上行指令生成模块1122根据写数据模块122反馈的写响应,保存与写响应相应的BD后,根据下一个BD生成写指令,使得上行读BD模块1121执行的生成写指令的操作不依赖于写数据模块122是否将数据写入CPU内存中,能够对形成对上行数据的控制操作的流水作业;并且,写数据模块122对来自若干个DMA通道的上行通道的写指令进行仲裁,根据仲裁得到的排序顺序,依次根据各个写指令进行数据搬运操作,能够形成对上行数据的数据搬运操作的流水作业;从而能够提高上行DMA数据传输的传输速度,能够适用于高速上行数据传输的应用场景。
在上述上行数据传输的处理原理的基础上,对于采用BD环的应用场景中,DMA数据传输还包括上行BD回写的处理过程。
图10示出了图7中的上行回写模块1123的工作流程图,也即图10示出了对上行数据的BD回写的工作原理,包括如下处理过程:
步骤1001、上行指令生成模块1122接收来自写数据模块122的写完成响应,写完成响应是写数据模块122轮询处理完上行指令生成模块1112发送的写指令,也即从外设缓存中读出数据并发送给CPU内存后,向上行指令生成模块1122反馈的;
步骤1002、上行指令生成模块1122从上行指令生成模块1122保存的BD中取出一个BD发送给上行回写模块1123,也即从保存BD的先进先出的队列中取出排在队头的一个BD发送给上行回写模块1123;
步骤1003、上行回写模块1123将接收到的BD中的控制权信息改写为CPU,将写指令中的数据长度信息写入到BD中,将改写后的BD发送给CPU内存;具体地,上行回写模块1123将接收到的BD中的控制权信息改写为CPU,保存改写后的BD;上行回写模块1123判断自身的存储空间中存储有改写后的BD的情况下,对预定的回写周期进行计时;在计时周期内,在所保存的改写后BD的数量大于或等于预定数量的情况下,将预定数量的改写后的BD作为待发送的BD,将待发送的BD发送给CPU内存,在所保存的改写后的BD的数量小于预定数量的情况下,在计时到时后,将所保存的改写后的BD作为待发送的BD,将待发送的BD发送给CPU内存。
通过上述处理过程,上行回写模块1123能够批量地回写BD,能够减少回写BD的次数,减少由于回写BD所占用的总线带宽,从而提高DMA数据传输的速度。还能够避免下行通道111中的改写后的BD的数量瞬间增加过多时造成BD拥塞或BD丢失,避免改写后的BD的数量长期小于预定数量的情况下,无法向CPU返回改写后的BD。
综上所述,根据本发明实施例的技术方案,在DMA控制器中设置若干个DMA通道和数据传输单元,将数据传输的控制操作和数据传输的数据搬运工作分离开来,也即由若干个DMA通道处理DMA数据传输的控制操作,具体地,各个DMA通道进行BD管理操作和生成传输指令操作,由一个数据传输单元处理全部的DMA数据传输的数据搬运工作,具体地,数据传输单元对来自若干个DMA通道的传输指令进行仲裁,根据仲裁得到的排序顺序,依次执行各个传输指令,在CPU内存和外设缓存之间传输数据,可见,DMA通道执行的数据控制操作不必依赖于数据传输单元执行的数据搬运操作,能够在DMA通道侧形成数据传输的控制操作的流水作业,数据传输单元依次对来自若干个DMA通道的传输指令进行处理,在数据传输单元侧形成数据传输的数据搬运操作的流水作业,进而能够提高DMA控制器的数据传输速度,能够适用于高速数据传输的应用场景。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

多通道直接存储器存取控制器.pdf_第1页
第1页 / 共23页
多通道直接存储器存取控制器.pdf_第2页
第2页 / 共23页
多通道直接存储器存取控制器.pdf_第3页
第3页 / 共23页
点击查看更多>>
资源描述

《多通道直接存储器存取控制器.pdf》由会员分享,可在线阅读,更多相关《多通道直接存储器存取控制器.pdf(23页珍藏版)》请在专利查询网上搜索。

本发明公开了一种多通道DMA控制器,在DMA控制器中设置若干个DMA通道和数据传输单元,将数据传输的控制操作和数据搬运工作分离开来,由若干个DMA通道处理DMA数据传输的控制操作,各个DMA通道进行BD管理操作和生成传输指令操作,由一个数据传输单元处理全部的DMA数据传输的数据搬运工作,数据传输单元对来自若干个DMA通道的传输指令进行仲裁,根据仲裁得到的排序顺序,依次执行各个传输指令,在CPU内存。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1