首页> 中国专利> 灵活配置多通道DMA控制器的方法及装置

灵活配置多通道DMA控制器的方法及装置

摘要

本发明提供一种灵活配置多通道DMA控制器的方法及装置,所述方法包括:主机按照数据的搬移方向配置描述符,主机对DMA控制器初始化;所述初始化包括:所述主机将描述符的存储地址及存储格式配置给所述DMA控制器,并启动所述DMA控制器;所述DMA控制器根据所述描述符的存储格式从所述描述符的存储地址中读取并解析描述符;根据所述描述符参数编辑整理并搬移数据;更新所述描述符参数,并根据描述符的中断控制字段判断是否发出中断信号以通知主机。本发明在原有的描述符基础上,增加新的描述符参数,简化了下级模块与DMA控制器连接时的处理逻辑;可以在不修改硬件逻辑的前提下,实现通道个数的自由扩展。

著录项

  • 公开/公告号CN106547709A

    专利类型发明专利

  • 公开/公告日2017-03-29

    原文格式PDF

  • 申请/专利权人 盛科网络(苏州)有限公司;

    申请/专利号CN201611049706.2

  • 发明设计人 贾复山;袁春建;李磊;

    申请日2016-11-24

  • 分类号G06F13/32(20060101);

  • 代理机构苏州威世朋知识产权代理事务所(普通合伙);

  • 代理人杨林洁

  • 地址 215021 江苏省苏州市工业园区星汉街5号B幢4楼13/16单元

  • 入库时间 2023-06-19 01:51:07

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-05-21

    授权

    授权

  • 2017-04-26

    实质审查的生效 IPC(主分类):G06F13/32 申请日:20161124

    实质审查的生效

  • 2017-03-29

    公开

    公开

说明书

技术领域

本发明涉及网络通信领域,尤其涉及一种灵活配置多通道DMA控制器的方法及装置。

背景技术

集成电路设计中,存储器用来存储各种数据。主机,例如:CPU则需要经常读写存储器,把数据从存储器的某个地址搬移至其他存储器地址或其他芯片的数据存储地址,此时,存储器读写操作会占用CPU大量的时间和进程,使得CPU的使用效率变低。在此需求下,DMA技术应运而生,CPU可以在初始化DMA控制器后,由DMA控制器自主完成数据的存取搬移操作,而不再需要CPU的介入,极大地减轻了CPU的负担,也提高了数据存取的效率。

DMA技术有普通模式和描述符模式之分。如图1所示,普通模式处理简单,DMA控制器包含一组控制寄存器和状态、中断寄存器;CPU将待传输数据的源地址、目的地址和数据长度配置到控制寄存器,并启动DMA操作。由DMA控制器根据以上的配置一次性自动完成数据的搬移,并修改相应的状态寄存器或产生中断信号。CPU查询状态寄存器或者接收中断信号以获得DMA控制器的状态,并进行后续处理。

如图2所示,基于描述符的DMA操作,则相对更灵活。每个描述符都可以看作是一次普通DMA操作所对应的配置寄存器组,包括待传输数据的源地址,目的地址以及数据长度等信息;而多个描述符可以通过链表的形式连接在一起,所以每个描述符会对应一块数据原始存储区域和一块数据目的存储区域。

如图3所示,CPU配置完成相应的描述符后,DMA控制器会自动完成读取描述符,进行数据搬移,改写状态寄存器或产生相应中断;而CPU可以在适当的时机响应中断或者查询状态寄存器来进行后续的处理。同时,描述符模式的DMA操作可以实现所谓的分散/聚集的数据处理,分散/聚集数据处理是指把一整块数据分拆并分别存储于多个目的地址,或把多个分散的数据整理合并存储到一个起始地址的操作;因为当前集成电路中数据基本上都是动态分散的,所以基于描述符的DMA操作成为当前DMA控制器是主要工作模式。

现有技术中的基于描述符的DMA操作具有以下不足:

首先,数据处理类型单一,只能完成基本的数据搬移,必须要指定确定的数据源地址、目的地址以及数据长度才能发起DMA操作;而在当今的集成电路芯片上会存在各种类型的数据,如以太网交换芯片上就可能存在数据报文收发、芯片内部表项配置及读取、芯片内部信息获取等多种类型的数据处理,为了节省芯片内部的存储空间,希望这些数据可以很快地被搬移到指定的系统存储空间内,现有的基于描述符的DMA无法根据具体数据类型完成相应处理,处理效率低下。其次, DMA控制器的多通道选择仲裁不够灵活,给使用造成很多不便。再次,DMA控制器的通道个数限制较死,一旦硬件逻辑设计完成后,通道个数就固定了,后期如果发现通道不够用,则需要重新进行硬件逻辑设计,对于已完成生产的芯片,则必须重新设计生产,对于时间和成本都是极大的浪费。

发明内容

本发明的目的在于提供一种灵活配置多通道DMA控制器的方法及装置。

为实现上述目的之一,本发明一实施方式的灵活配置多通道DMA控制器的方法,所述方法包括:

主机按照数据的搬移方向配置描述符,所述描述符由若干个描述符参数构成,所述描述符参数包括:类型描述字段、数据存储地址、中断控制字段、状态标识字段以及链表控制信息字段;

所述数据存储地址为数据存储原地址或数据存储目的地址;

主机对DMA控制器初始化,所述初始化包括:所述主机将描述符的存储地址及存储格式配置给所述DMA控制器,并启动所述DMA控制器;

所述DMA控制器根据所述描述符的存储格式从所述描述符的存储地址中读取并解析描述符;

根据所述描述符参数编辑整理并搬移数据;

更新所述描述符参数,并根据描述符的中断控制字段判断是否发出中断信号以通知主机。

作为本发明一实施方式的进一步改进,所述类型描述字段包括:类型定义,专用描述字段;

所述类型定义包括:接收报文类型、发送报文类型、表项配置类型、表项读取类型以及信息收集类型;

所述接收报文类型以及所述发送报文类型对应的专用描述字段均包括:接口选择、报文开始标志、报文结束标志、报文数据长度、报文CRC;

所述表项配置类型对应的专用描述字段包括:接口选择、表项地址、表项数据格式、配置数据长度以及配置控制;

所述表项读取类型对应的专用描述字段包括:接口选择、表项地址、表项数据格式、读取数据长度以及读取控制;

所述信息收集类型包括:接口选择、信息数据格式、信息数据长度以及信息收集控制。

作为本发明一实施方式的进一步改进,更新的所述描述符参数包括:当前描述符对应的状态标识字段、专用描述字段。

作为本发明一实施方式的进一步改进,所述链表控制字段包括:下一描述符的地址以及当前描述符对应的虚拟通道号。

作为本发明一实施方式的进一步改进,

所述数据的搬移方向包括两种,其中一种为:从外部的存储器到交换芯片,其中另一种为:从交换芯片到外部的存储器;

所述方法具体包括:

若数据的搬移方向为从外部的存储器到交换芯片,则描述符中的数据存储地址为数据存储源地址,主机配置描述符中的数据存储源地址、类型描述字段、中断控制字段、状态标识字段以及链表控制信息字段的具体参数值;

主机对DMA控制器初始化并启动DMA控制器后,

所述DMA控制器根据描述符的存储格式从所述描述符的存储地址读取描述符,解析描述符中对应的具体参数值;

根据描述符中的数据存储源地址,DMA控制器从外部存储器读取待搬移的数据,并根据描述符中的描述符参数编辑整理所述数据后,将其发送给交换芯片;

更新所述描述符中的状态标识字段及部分专用描述字段,并根据描述符的中断控制字段判断是否发出中断信号以通知主机;

若数据的搬移方向为从交换芯片到外部的存储器,则描述符中的数据存储地址为数据存储目的地址,主机配置描述符中的数据存储目的地址、类型描述字段、中断控制字段、状态标识字段以及链表控制信息字段;

主机对DMA控制器初始化并启动DMA控制器后,

所述DMA控制器根据描述符的存储格式从所述描述符的存储地址读取描述符,解析描述符中对应的具体参数值;

根据所述描述符中的描述符参数,收集交换芯片内部的所述待搬移的数据,并根据描述符中的描述符参数编辑整理所述数据后,将其发送到描述符指定的数据存储目的地址;

更新所述描述符中的状态标识字段及部分专用描述字段,并根据描述符的中断控制字段判断是否发出中断信号以通知主机。

为实现上述目的之一,本发明一实施方式的灵活配置多通道DMA控制器的装置,所述装置包括:

外部的存储器,主机,交换芯片,设置于所述交换芯片中的DMA控制器,以及设置于主机中的配置模块和初始化模块;

所述配置模块用于驱动主机按照数据的搬移方向配置描述符,所述描述符由若干个描述符参数构成,所述描述符参数包括:类型描述字段、数据存储地址、中断控制字段、状态标识字段以及链表控制信息字段;

所述数据存储地址为数据存储原地址或数据存储目的地址;

所述初始化模块用于驱动主机对DMA控制器初始化,所述初始化包括:所述主机将描述符的存储地址及存储格式配置给所述DMA控制器,并启动所述DMA控制器;

所述DMA控制器根据所述描述符的存储格式从所述描述符的存储地址读取并解析描述符;

根据所述描述符参数编辑整理并搬移数据;;

更新所述描述符参数,并根据描述符的中断控制字段判断是否发出中断信号以通知主机。

作为本发明一实施方式的进一步改进,所述类型描述字段包括:类型定义,专用描述字段;

所述类型定义包括:接收报文类型、发送报文类型、表项配置类型、表项读取类型以及信息收集类型;

所述接收报文类型以及所述发送报文类型对应的专用描述字段均包括:接口选择、报文开始标志、报文结束标志、报文数据长度、报文CRC;

所述表项配置类型对应的专用描述字段包括:接口选择、表项地址、表项数据格式、配置数据长度以及配置控制;

所述表项读取类型对应的专用描述字段包括:接口选择、表项地址、表项数据格式、读取数据长度以及读取控制;

所述信息收集类型包括:接口选择、信息数据格式、信息数据长度以及信息收集控制。

作为本发明一实施方式的进一步改进,更新的所述描述符参数包括:当前描述符对应的状态标识字段、专用描述字段。

作为本发明一实施方式的进一步改进,所述链表控制字段包括:下一描述符的地址以及当前描述符对应的虚拟通道号。

作为本发明一实施方式的进一步改进,

所述数据的搬移方向包括两种,其中一种为:从外部的存储器到交换芯片,其中另一种为:从交换芯片到外部的存储器;

若数据的搬移方向为从外部的存储器到交换芯片,描述符的数据存储地址为数据存储源地址,所述配置模块驱动主机配置描述符中的数据存储源地址、类型描述字段、中断控制字段、状态标识字段以及链表控制信息字段的具体参数值;

所述初始化模块驱动主机对DMA控制器初始化并启动DMA控制器后,所述DMA控制器根据描述符的存储格式从所述描述符的存储地址读取描述符,解析描述符中对应的具体参数值;

根据描述符中的数据存储源地址,DMA控制器从外部存储器读取待搬移的数据,并根据描述符中的描述符参数编辑整理所述数据后,将其发送给交换芯片;

更新所述描述符中的状态标识字段及部分专用描述字段,并根据描述符的中断控制字段判断是否发出中断信号以通知主机;

若数据的搬移方向为从交换芯片到外部的存储器,描述符中的数据存储地址为数据存储目的地址,所述配置模块驱动主机配置描述符中的数据存储目的地址、类型描述字段、中断控制字段、状态标识字段以及链表控制信息字段;

主机对DMA控制器初始化并启动DMA控制器后,

所述DMA控制器根据描述符的存储格式从所述描述符的存储地址读取描述符,解析描述符中对应的具体参数值;

根据所述描述符中的描述符参数,收集交换芯片内部的所述待搬移的数据,并根据描述符中的描述符参数编辑整理所述数据后,将其发送到描述符指定的数据存储目的地址;

更新所述描述符中的状态标识字段及部分专用描述字段,并根据描述符的中断控制字段判断是否发出中断信号以通知主机。

与现有技术相比,本发明的有益效果是:本发明的灵活配置多通道DMA控制器的方法及装置,在原有的描述符基础上,增加新的描述符参数,其中,增加类型描述字段,实现了多种类型数据的DMA灵活处理,简化了下级模块与DMA控制器连接时的处理逻辑;增加链表控制信息字段,可以在不修改硬件逻辑的前提下,仅修改上层主机的控制逻辑,实现通道个数的自由扩展。

附图说明

图1是本发明背景技术中普通模式下DMA控制器操作原理示意图;

图2是本发明背景技术中基于描述符的DMA操作中描述符的定义示意图;

图3是本发明背景技术中描述符模式下DMA控制器操作原理示意图;

图4是本发明一实施方式中灵活配置多通道DMA控制器的方法的流程图;

图5是本发明一实施方式中单个DMA通道所对应的环形描述符设计示意图;

图6是本发明一实施方式中单个DMA通道所对应的链表形式描述符设计示意图;

图7是本发明中描述符所对应的描述符参数示意图;

图8是本发明一实施方式中灵活配置多通道DMA控制器的装置的模块图。

具体实施方式

以下将结合附图所示的具体实施方式对本发明进行详细描述。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。

如图4所示,在本发明的一实施方式中,灵活配置多通道DMA控制器的方法,包括:

S1、主机按照数据的搬移方向配置描述符,所述描述符由若干个描述符参数构成,所述描述符参数包括:类型描述字段、数据存储地址、中断控制字段、状态标识字段以及链表控制信息字段;

本发明具体实施方式中,所述主机通常为CPU;所述数据的搬移方向包括两种,其中一种为:从外部的存储器到交换芯片,其中另一种为:从交换芯片到外部的存储器。

本发明一实施方式中,所述类型描述字段包括:类型定义,专用描述字段;所述类型定义包括:接收报文类型、发送报文类型、表项配置类型、表项读取类型以及信息收集类型;所述接收报文类型以及所述发送报文类型对应的专用描述字段均包括:接口选择、报文开始标志、报文结束标志、报文数据长度、报文CRC;所述表项配置类型对应的专用描述字段包括:接口选择、表项地址、表项数据格式、配置数据长度以及配置控制;所述表项读取类型对应的专用描述字段包括:接口选择、表项地址、表项数据格式、读取数据长度以及读取控制;所述信息收集类型包括:接口选择、信息数据格式、信息数据长度以及信息收集控制。

所述数据存储地址,即表示数据的具体存储位置,在本发明的具体实施方式中,所述数据存储地址为数据存储源地址或数据存储目的地址;在本发明的具体实施方式中,根据数据的搬移方向具体配置数据存储地址,以下将会详细描述。

所述中断控制字段用于描述在哪个描述符结束后产生中断信号;所述状态标识字段用于描述当前描述符完成数据搬移的状态;例如:其状态为“完成”“错误”等,在实际应用中,其可以采用二进制编码进行标识,在此不做详细赘述。需要说明的是,在数据搬移完成、并且主机的相应处理结束后,其对应的描述符也需要进行更新,通常情况下,更新的描述符参数包括:当前描述符对应的状态标识字段以及专用描述字段。

本发明具体实施方式中,增加了中断控制字段,可以根据实现情况决定是否在每个描述符处理结束时都产生中断。由于在某些应用场景下,DMA控制器的处理速度远超主机的处理速度,如果每个描述符结束时都产生中断,可能导致主机疲于应付DMA的中断而导致其他处理无法被及时响应;所以配置描述符中的中断控制字段,可以决定何时产生中断;即:适当控制中断产生的速度不影响主机其他任务的执行,又能保证DMA的操作可以及时被主机处理。

所述链表控制信息字段用于描述各个描述符之间的连接关系。

通常情况下DMA控制器对应每个通道的描述符是相互独立的,DMA控制器在获取每个通道的描述符时,都是按各通道的规则去寻找下一个描述符。

本发明一种实施方式中,设置描述符地址为连续地址,且指定最后一个地址结束后返回第一个地址,也就是把一个通道内的所有描述符串接起来形成一个闭环。

结合图5所示,描述符1地址定义为0,每个描述符占用32字节地址,则描述符2的起始地址则为32,描述符3的起始地址为64,依次类推;定义最后一个描述符为N,则它的起始地址应该是(N-1)*32;具体应用场景下,若当前描述符已经是最后一个描述符,则将下一个描述符的地址设置为0,指向描述符1即可;这样DMA控制器可以在当前描述符的地址直接累加一个固定的数值得到本通道下一个描述符的地址;该种链表控制信息字段的配置,实现方式简单,易于理解,但受限于固定数值的累加操作,扩展性较差,一旦固定了描述符的个数后,就不易修改。

进一步的,本发明优选实施方式中,所述链表控制字段包括:下一描述符的地址以及当前描述符对应的虚拟通道号;所述链表控制字段控制描述符之间的连接关系以及虚拟通道扩展功能。

如图6所示,链表控制字段中NxtPtr代表下一个描述符的地址,而VC_x表示当前描述符对应的虚拟通道号;其中,描述符1和2属于虚拟通道0;描述符3和4属于虚拟通道1;描述符5和6属于虚拟通道2,而描述符N-1和描述符N属于虚拟通道M;该应用场景下,每个描述符都可以指定下一个描述符的地址,保证描述符可以做任意扩展,且没有个数限制;DMA控制器获取到当前描述符后,即可以根据所述链表控制字段中的参数至获知下一个描述符的地址,进而继续读取下一个描述符,并进行后续处理;主机在配置描述符时,指定该描述符的虚拟通道号,和下一个描述符的地址;DMA控制器则可以根据虚拟通道号的不同分别处理,不同的虚拟通道号对应的描述符里的类型描述字段也可以定义为不同,以实现同一个DMA物理通道传输不同类型的数据的目的;保持了虚拟通道之间的相对独立性。对于某些应用要求较多DMA通道,且物理上不能及时修改硬件逻辑设计增加物理通道的场景,采用本发明的方法将一个物理通道扩展为多个虚拟通道,以满足数据处理的要求,极大地实现了设计的灵活性。

进一步的,本发明一实施方式中,所述方法还包括:

S2、主机对DMA控制器初始化,所述初始化包括:所述初始化包括:所述主机将描述符的存储地址及存储格式配置给所述DMA控制器,并启动所述DMA控制器;

所述DMA控制器根据所述描述符的存储格式从所述描述符的存储地址中读取并解析描述符;根据所述描述符参数编辑整理并搬移数据;更新所述描述符参数,并根据描述符的中断控制字段判断是否发出中断信号以通知主机。

本发明一具体实施方式中,所述步骤S2具体包括:

若数据的搬移方向为从外部的存储器到交换芯片,则描述符的数据存储地址为数据存储源地址,主机配置描述符中的数据存储源地址、类型描述字段、中断控制字段、状态标识字段以及链表控制信息字段的具体参数值;

主机对DMA控制器初始化并启动DMA控制器后,所述DMA控制器根据描述符的存储格式从所述描述符的存储地址读取描述符,解析描述符中对应的具体参数值;根据描述符中的数据存储源地址,DMA控制器从外部存储器读取待搬移的数据,并根据描述符中的描述符参数编辑整理所述数据后,将其发送给交换芯片;更新所述描述符中的状态标识字段及部分专用描述字段,并根据描述符的中断控制字段判断是否发出中断信号以通知主机;

若数据的搬移方向为从交换芯片到外部的存储器,则描述符中的数据存储地址为数据存储目的地址,主机配置描述符中的数据存储目的地址、类型描述字段、中断控制字段、状态标识字段以及链表控制信息字段;

主机对DMA控制器初始化并启动DMA控制器后,所述DMA控制器根据描述符的存储格式从所述描述符的存储地址读取描述符,解析描述符中对应的具体参数值;根据所述描述符中的描述符参数,收集交换芯片内部的所述待搬移的数据,并根据描述符中的描述符参数编辑整理所述数据后,将其发送到描述符指定的数据存储目的地址;更新所述描述符中的状态标识字段及部分专用描述字段,并根据描述符的中断控制字段判断是否发出中断信号以通知主机。

结合图7所示,针对具有不同类型定义的描述符,所述描述符对应的描述符参数均有所不同,相应的,主机配置的描述符参数以及DMA控制器对数据的编辑整理也有所不同,以下将详细描述本发明所涉及到的5种不同类型定义所对应的具体数据搬移流程。

具体的,对于类型定义为接收报文类型,其数据的搬移方向为从外部的存储器到交换芯片,如此,则主机配置的描述符中的数据存储地址为数据存储源地址,接口选择、报文开始标志、报文结束标志、报文数据长度、报文CRC、中断控制字段、状态标识字段以及链表控制信息字段的具体参数值;其中,需要说明的是,接收报文类型中报文数据长度为外部的存储器中的数据的具体长度。

主机对DMA控制器初始化后,所述DMA控制器读取并解析描述符,获取当前描述符对应的数据存储源地址,然后从该数据存储源地址读取与描述符相应的数据;进一步的,DMA控制器根据描述符的具体参数编辑整理该数据,将其整理为普通以太网报文格式,再将其送到交换芯片内部;然后DMA控制器更新所述描述符参数,并根据描述符的中断控制字段产生相应的中断信号。因为交换芯片内部逻辑接收到的数据格式就是普通以太网的报文格式数据,直接同普通以太网口接收到的报文数据一同处理即可,无需再缓存数据并对其进行格式转换,所以,简化了交换芯片内部的相应处理逻辑,节省了缓冲存储空间。

对于类型定义为发送报文类型,其搬移数据的方向为从交换芯片到外部的存储器,如此,则主机配置的描述符中的数据存储地址为数据存储目的地址,接口选择、数据长度、中断控制字段以及链表控制信息字段的具体参数值,同时,主机无需对其他描述符参数的具体参数值进行配置,仅需要为报文开始标志、报文结束标志、报文CRC、状态标识字段预留相应位置;其中,需要特别说明的是发送报文类型中数据长度为目的存储器的大小。

主机对DMA控制器初始化后,所述DMA控制器读取并解析描述符,直接从交换芯片的内部逻辑中读取报文数据,根据所述描述符参数编辑整理该报文数据,将其转换为主机可以接受的数据格式,并将其写入所述描述符指定的数据存储目的地址中;然后DMA控制器更新所述描述符参数,将相应的报文各种标志和状态标识字段写入描述符,并根据描述符中断控制字段产生相应的中断信号。因为DMA控制器可以接收普通以太网报文格式的数据,并根据描述符参数完成报文格式(主机要求的格式)的转换,所以,交换芯片内部逻辑无需为此再做任何特殊处理,只要按普通以太网报文格式处理数据即可,简化了交换芯片内部逻辑处理的复杂程度,节省了交换芯片内部数据格式转换时需要的缓存空间。

对于类型定义为表项配置类型,其数据的搬移方向为从外部的存储器到交换芯片,如此,则主机配置的描述符中的数据存储地址为数据存储源地址,接口选择、表项地址、表项数据格式、配置数据长度、配置控制、中断控制字段、状态标识字段以及链表控制信息字段的具体参数值;其中,需要说明的是,表项配置类型中配置数据长度为外部的存储器中的配置数据的具体长度。

主机对DMA控制器初始化后,所述DMA控制器读取解析描述符,获取当前描述符对应的数据存储源地址,然后从该数据存储源地址读取数据;进一步的,DMA控制器根据描述符具体参数编辑整理该数据,将其整理为交换芯片内部普通的表项配置格式,再将其送到交换芯片内部。然后DMA控制器更新所述描述符参数,并根据描述符的中断控制字段产生相应的中断信号。因为交换芯片内部收到的数据就是普通的表项配置的数据格式,直接对接交换芯片内部的表项配置逻辑即可,无需再缓存数据并对其进行格式转换,所以,简化了交换芯片内部的相应处理逻辑,节省了缓冲存储空间。进一步的,对于类型定义为表项配置类型,其对应的专用描述字段中,可以增加其他控制信息,例如:时间控制信息,根据该信息可以控制DMA控制器何时启动表项配置的数据搬移操作,再结合DMA控制器内部的定时器,可以实现对交换芯片进行定时配置或周期性配置的操作,在此不做详细赘述。

对于类型定义为读取配置,其数据的搬移方向为从交换芯片到外部的存储器,如此,则主机配置的描述符中的数据存储地址为数据存储目的地址,接口选择、表项地址、表项数据格式、读取数据长度、读取控制、中断控制字段、状态标识字段以及链表控制信息字段的具体参数值;其中,需要说明的是,所述读取数据长度为目的存储器的大小。

主机对DMA控制器初始化后,所述DMA控制器读取并解析描述符,直接从交换芯片内部逻辑的表项读取接口中读取数据,根据所述描述符参数编辑整理该表项数据,将其转换为主机可以接受的数据格式,并将其写入所述描述符指定的数据存储目的地址中。然后DMA控制器更新所述描述符参数,并根据描述符中的中断控制字段产生相应的中断信号。因为DMA控制器可以直接接收交换芯片内部逻辑中的表项读取接口的数据,并根据描述符参数完成数据格式转换(主机要求的格式),所以,交换芯片内部逻辑无需为此再做任何特殊处理,简化了内部逻辑处理的复杂程度,节省了交换芯片内部做数据格式转换时需要的缓存空间。

进一步的,对于类型定义为表项读取,其对应的专用描述字段中,可以增加其他控制信息,例如:时间控制信息,根据该信息可以控制DMA控制器何时启动表项读取的数据搬移操作,再结合DMA控制器内部的定时器,可以实现对交换芯片进行定时或周期性读取表项的任务;在此不做详细赘述。

对于类型定义为信息收集,其数据的搬移方向为从交换芯片到外部的存储器,如此,则主机配置的描述符中的数据存储地址为数据存储目的地址,接口选择、信息数据格式、信息数据长度、信息控制、状态标识字段以及链表控制信息字段的具体参数值;其中,需要说明的是,所述信息数据长度为目的存储器的大小。

主机对DMA控制器初始化后,所述DMA控制器读取并解析描述符,直接从交换芯片内部逻辑的信息收集接口读取数据,根据所述描述符参数编辑整理该信息数据,将其转换为主机可以接受的数据格式,并将其写入所述描述符指定的数据存储目的地址中;然后DMA控制器更新所述描述符参数,并根据描述符中的中断控制字段产生相应的中断信号。因为DMA控制器可以直接接收交换芯片内部信息收集接口的数据,并根据描述符参数完成格式转换(主机要求的格式),所以,交换芯片内部逻辑无需为此再做任何特殊处理,简化了内部逻辑处理的复杂程度,节省了交换芯片做数据格式转换时需要的缓存空间。可以理解的是,对于上述各种类型定义对应的数据处理都有一个共同点,就是DMA控制器根据描述符里的描述符参数独立完成相应的处理,以太网交换芯片内部无需考虑针对DMA接口的特别处理。

结合图8所示,本发明一实施方式提供的灵活配置多通道DMA控制器的装置,所述装置包括:外部的存储器100,主机200,交换芯片300,设置于主机内的配置模块201、初始化模块203;以及设置于所述交换芯片中的DMA控制器301。

所述配置模块201用于驱动主机200按照数据的搬移方向配置描述符,所述描述符由若干个描述符参数构成,所述描述符参数包括:类型描述字段、数据存储地址、中断控制字段、状态标识字段以及链表控制信息字段;

本发明具体实施方式中,所述主机200通常为CPU;所述数据的搬移方向包括两种,其中一种为:从外部的存储器100到交换芯片300,其中另一种为:从交换芯片300到外部的存储器100。

本发明一实施方式中,所述类型描述字段包括:类型定义,专用描述字段;所述类型定义包括:接收报文类型、发送报文类型、表项配置类型、表项读取类型以及信息收集类型;所述接收报文类型以及所述发送报文类型对应的专用描述字段均包括:接口选择、报文开始标志、报文结束标志、报文数据长度、报文CRC;所述表项配置类型对应的专用描述字段包括:接口选择、表项地址、表项数据格式、配置数据长度以及配置控制;所述表项读取类型对应的专用描述字段包括:接口选择、表项地址、表项数据格式、读取数据长度以及读取控制;所述信息收集类型包括:接口选择、信息数据格式、信息数据长度以及信息收集控制。

所述数据存储地址,即表示数据的具体存储位置,在本发明的具体实施方式中,所述数据存储地址为数据存储源地址或数据存储目的地址;在本发明的具体实施方式中,所述配置模块201根据数据的搬移方向具体配置数据存储地址。

所述中断控制字段用于描述在哪个描述符结束后产生中断信号,并将指挥权返回给CPU;所述状态标识字段用于描述当前描述符完成数据搬移的状态;例如:其状态为“完成”“错误”等,在实际应用中,其可以采用二进制编码进行标识,在此不做详细赘述。需要说明的是,在数据搬移完成、并且主机的相应处理结束后,其对应的描述符也需要进行参数更新,通常情况下,更新的描述符参数包括:当前描述符对应的状态标识字段以及专用描述字段。

本发明具体实施方式中,增加了中断控制字段,可以根据实现情况决定是否在每个描述符处理结束时都产生中断。由于在某些应用场景下,DMA控制器301的处理速度远超主机200的处理速度,如果每个描述符结束时都产生中断,可能导致主机200疲于应付DMA的中断而导致其他处理无法被及时响应;所以配置描述符中的中断控制字段,可以决定何时产生中断;即:适当控制中断产生的速度不影响主机200其他任务的执行,又能保证DMA的操作可以及时被主机200处理。

所述链表控制信息字段用于描述各个描述符之间的连接关系。

通常情况下DMA控制器301对应每个通道的描述符是相互独立的,DMA控制器301在获取每个通道的描述符时,都是按各通道的规则去寻找下一个描述符。

本发明一种实施方式中,设置描述符地址为连续地址,且指定最后一个地址结束后返回第一个地址,也就是把一个通道内的所有描述符串接起来形成一个闭环。

如图5所示,描述符1地址定义为0,每个描述符占用32字节地址,则描述符2的起始地址则为32,描述符3的起始地址为64,依次类推;定义最后一个描述符为N,则它的起始地址应该是(N-1)*32;具体应用场景下,若当前描述符已经是最后一个描述符,则将下一个描述符的地址设置为0,指向描述符1即可;这样DMA控制器301可以在当前描述符的地址直接累加一个固定的数值得到本通道下一个描述符的地址;该种链表控制信息字段的配置,实现方式简单,易于理解,但受限于固定数值的累加操作,扩展性较差,一旦固定了描述符的个数后,就不易修改。

进一步的,本发明优选实施方式中,所述链表控制字段包括:下一描述符的地址以及当前描述符对应的虚拟通道号;所述链表控制字段控制描述符之间的连接关系以及虚拟通道扩展功能。

如图6所示,链表控制字段中NxtPtr代表下一个描述符的地址,而VC_x表示当前描述符对应的虚拟通道号;其中,描述符1和2属于虚拟通道0;描述符3和4属于虚拟通道1;描述符5和6属于虚拟通道2,而描述符N-1和描述符N属于虚拟通道M;该应用场景下,每个描述符都可以指定下一个描述符的地址,保证描述符可以做任意扩展,且没有个数限制;DMA控制器301获取到当前描述符后,即可以根据所述链表控制字段中的参数至获知下一个描述符的地址,进而继续读取下一个描述符,并进行后续处理;主机200在配置描述符时,指定该描述符的虚拟通道号,和下一个描述符的地址;DMA控制器301则可以根据虚拟通道号的不同分别处理,不同的虚拟通道号对应的描述符里的类型描述字段也可以定义为不同,以实现同一个DMA物理通道传输不同类型的数据的目的;保持了虚拟通道之间的相对独立性。对于某些应用要求较多DMA通道,且物理上不能及时修改硬件逻辑设计增加物理通道的场景,采用本发明的方法将一个物理通道扩展为多个虚拟通道,以满足数据处理的要求,极大地实现了设计的灵活性。

进一步的,本发明一实施方式中,初始化模块203用于驱动主机200对DMA控制器301初始化,所述初始化包括:所述主机200将描述符的存储地址及存储格式配置给所述DMA控制器301,并启动所述DMA控制器301;

所述DMA控制器301根据所述描述符的存储格式从所述描述符的存储地址中读取并解析描述符;根据所述描述符参数编辑整理并搬移数据;更新所述描述符参数,并根据描述符的中断控制字段判断是否发出中断信号以通知主机200。本发明一具体实施方式中,

若数据的搬移方向为从外部的存储器100到交换芯片300,则描述符的数据存储地址为数据存储源地址,所述配置模块301驱动主机配置描述符中的数据存储源地址、类型描述字段、中断控制字段、状态标识字段以及链表控制信息字段的具体参数值;

所述初始化模块203驱动主机200对DMA控制器301初始化并启动DMA控制器301后,所述DMA控制器301根据描述符的存储格式从所述描述符的存储地址读取描述符,解析描述符中对应的具体参数值;根据描述符中的数据存储源地址,DMA控制器301从外部存储器读取待搬移的数据,并根据描述符中的描述符参数编辑整理所述数据后,将其发送给交换芯片;更新所述描述符中的状态标识字段及部分专用描述字段,并根据描述符的中断控制字段判断是否发出中断信号以通知主机200;

若数据的搬移方向为从交换芯片300到外部的存储器100,则描述符中的数据存储地址为数据存储目的地址,所述配置模块201驱动主机配置描述符中的数据存储目的地址、类型描述字段、中断控制字段、状态标识字段以及链表控制信息字段;

主机200对DMA控制器301初始化并启动DMA控制器301后,所述DMA控制器301根据描述符的存储格式从所述描述符的存储地址读取描述符,解析描述符中对应的具体参数值;根据所述描述符中的描述符参数,收集交换芯片内部的所述待搬移的数据,并根据描述符中的描述符参数编辑整理所述数据后,将其发送到描述符指定的数据存储目的地址;更新所述描述符中的状态标识字段及部分专用描述字段,并根据描述符的中断控制字段判断是否发出中断信号以通知主机200。

针对具有不同类型定义的描述符,所述描述符对应的描述符参数均有所不同,相应的,主机200配置的描述符参数以及DMA控制器301对数据的编辑整理也有所不同,上述装置实现本发明所涉及到的5种不同类型定义所对应的具体数据搬移流程,为描述的方便和简洁,可以参考前述方法实施方式中的对应过程,在此不再赘述。

需要说明的是,本发明仅以以太网交换芯片为例做具体说明,但在实际应用过程中,该发明亦可以应用于其他类型芯片的设计,相应的,也会存在更多类型描述字段,但本领域技术人员结合本发明的设计思想后,根据不同数据类型设置不同的类型描述字段,以进行后续的处理,都可以达到简化后续模块处理复杂程度和节省存储空间的目的;同时,虚拟通道扩展的功能也可以应用于任何DMA控制器的设计,以增加其灵活性和应用范围,在此不做详细赘述。

综上所述,本发明的灵活配置多通道DMA控制器的方法及装置,在原有的描述符基础上,增加新的描述符参数,其中,增加类型描述字段,实现了多种类型数据的DMA灵活处理,简化了下级模块与DMA控制器连接时的处理逻辑;增加链表控制信息字段,可以在不修改硬件逻辑的前提下,仅修改上层主机的控制逻辑,实现通道个数的自由扩展。

为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本发明时可以把各模块的功能在同一个或多个软件和/或硬件中实现。

以上所描述的装置实施方式仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施方式方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号