发明名称 多通道直接存储器存取控制器
摘要 本发明公开了一种多通道DMA控制器,在DMA控制器中设置若干个DMA通道和数据传输单元,将数据传输的控制操作和数据搬运工作分离开来,由若干个DMA通道处理DMA数据传输的控制操作,各个DMA通道进行BD管理操作和生成传输指令操作,由一个数据传输单元处理全部的DMA数据传输的数据搬运工作,数据传输单元对来自若干个DMA通道的传输指令进行仲裁,根据仲裁得到的排序顺序,依次执行各个传输指令,在CPU内存和外设缓存之间传输数据,能够在DMA通道中形成数据传输的控制操作的流水作业,在数据传输单元中形成数据传输的数据搬运操作的流水作业,能够提高DMA控制器的数据传输速度,适用于高速数据传输的应用场景。
申请公布号 CN103064807B 申请公布日期 2015.08.19
申请号 CN201210550249.0 申请日期 2012.12.17
申请人 福建星网锐捷网络有限公司 发明人 王瑶宝
分类号 G06F13/28(2006.01)I 主分类号 G06F13/28(2006.01)I
代理机构 北京同达信恒知识产权代理有限公司 11291 代理人 黄志华
主权项 一种多通道直接存储器存取DMA控制器,其特征在于,包括:若干个DMA通道和数据传输单元;所述DMA通道,用于接收到来自中央处理器CPU的缓存标识符BD更新消息后,从CPU内存中读取BD,根据BD和外设缓存中的数据存储情况,生成传输指令;所述数据传输单元,用于对来自若干个所述DMA通道的传输指令进行仲裁,根据仲裁得到的排序顺序,依次执行各个传输指令、在所述CPU内存和所述外设缓存之间传输数据;所述传输指令包括:读指令;则,所述DMA通道,具体包括:下行通道,所述下行通道具体包括:下行读BD模块和下行指令生成模块,其中,下行读BD模块,用于在接收到来自CPU的BD更新消息后,从所述CPU内存中读取若干个BD,并保存读取的若干个BD;下行指令生成模块,用于根据所述下行读BD模块读取的BD中的读取数据长度信息和所述外设缓存中所存储的已接收数据的数据量大小,生成所述读指令;所述数据传输单元,具体包括:读数据模块,用于对来自若干个所述DMA通道的下行通道的读指令进行仲裁,根据仲裁得到的排序顺序,依次根据各个读指令从所述CPU内存中读出相应的数据,并将读出的数据发送给所述外设缓存;所述下行指令生成模块,具体用于:执行读取当前BD操作、判断操作、生成读指令操作和发送读指令操作;其中,读取当前BD操作:在当前时间片内,在所述下行指令生成模块中具有空闲存储空间的情况下,从所述下行读BD模块中获取一个BD作为当前BD;判断操作:判断对比条件是否成立,对比条件为:对比当前BD中的读取数据长度信息所示的数据长度和所述下行指令生成模块中存储的已经对应生成读指令的各个BD中的读取数据长度信息所示的数据长度之和,是否小于所述外设缓存中与该DMA通道的下行通道相对应的存储空间中的空闲存储空间的大小,在判断对比条件成立的情况下,执行生成读指令操作,否则,继续等待,直到对比条件成立;生成读指令操作:生成与当前BD对应的读指令,在读指令中携带当前BD中的读取数据长度信息和当前BD中的读取数据的地址信息;并在所述下行指令生成模块中保存当前BD;发送读指令操作:将生成的与当前BD对应的读指令发送给所述读数据模块;和/或,所述传输指令包括:写指令;则,所述DMA通道,具体包括:上行通道,所述上行通道具体包括:上行读BD模块和上行指令生成模块,其中,上行读BD模块,用于在接收到来自CPU的BD更新消息后,从所述CPU内存中读取若干个BD,并保存读取的若干个BD;上行指令生成模块,用于根据所述外设缓存中所存储的待发送数据的数据量大小和所述上行读BD模块读取的BD中的待写入数据的地址信息,生成所述写指令;所述数据传输单元,具体包括:写数据模块,用于对来自若干个所述DMA通道的上行通道的写指令进行仲裁,根据仲裁得到的排序顺序,依次根据各个写指令从所述外设缓存中读出相应的数据,并将读出的数据发送给所述CPU内存;所述上行指令生成模块,具体用于:在当前时间片内,在所述上行指令生成模块中具有空闲存储空间的情况下,从所述上行读BD模块中获取一个BD作为当前BD;生成与当前BD对应的写指令,在生成的写指令中携带所述外设缓存中待发送的数据的数据长度信息和当前BD中的CPU内存中待写入数据的地址信息;在所述上行指令生成模块中保存当前BD;将生成的写指令发送给所述写数据模块。
地址 350002 福建省福州市仓山区金山大道618号桔园州工业园19#楼