一种总线通信方法及系统技术方案

技术编号:14990459 阅读:90 留言:0更新日期:2017-04-03 21:19
本申请公开了一种总线通信方法及系统,通过一级缓存接收总线数据;在DMA数据传输启动时,将一级缓存接收的总线数据保存到二级缓存中,并将二级缓存中的总线数据保存到三级缓存中;三级缓存的容量大于二级缓存的容量;在将三级缓存存满时,中断DMA数据传输,向CPU发送DMA中断请求,以使CPU在接收到DMA中断请求后将三级缓存中保存的总线数据提取到本地磁盘中。本申请提供的方案,在二级缓存后增加了三级缓存,且三级缓存的容量大于二级缓存的容量,在三级缓存的容量存满时再向CPU发送DMA中断请求,可以降低CPU转移总线数据的频率,从而降低CPU负载和磁盘负载,便于及时处理其他线程任务,提高设备性能。

【技术实现步骤摘要】

本专利技术涉及数据通信
,尤其涉及一种总线通信方法及系统
技术介绍
在高带宽数据通信中,例如在使用千兆以太网,PCIe通信协议的工况下,为了保证数据可被正确快速地接收,大多采用DMA(DirectMemoryAccess,直接内存存取)数据传输方式传输数据。DMA是一种不经过CPU而直接从内存存取数据的数据交换模式,在DMA方式下,CPU只须向DMA控制器下达指令,让DMA控制器来处理数据的传送,底层硬件板卡在接收到数据后,将数据直接通过DMA数据传输方式存储到主机分配的DMA缓存中,数据传送完毕再通过DMA中断把信息反馈给CPU,CPU通过DMA中断感知到数据已经存放到DMA缓存后,便将此数据保存到本地磁盘,之后下一轮的DMA数据传输才能开始,这样可以避免CPU频繁访问底层硬件,在进行数据传输尤其是大数据量传输时可以很大程度上减轻CPU的资源占用率。但是,由于每一轮的DMA数据传输完成后均需要CPU将数据保存到本地磁盘,当每轮DMA数据传输之间的间隔时间较短时,便需要CPU频繁地将数据从DMA缓存转移到本地磁盘,从而导致CPU负载和磁盘负载过高,无法及时处理其他线程任务,降低设备性能。
技术实现思路
本专利技术提供一种总线通信方法及系统,以降低CPU负载和磁盘负载,便于及时处理其他线程任务,提高设备性能。为解决上述技术问题,本专利技术实施例提供以下技术方案:一种总线通信方法,包括:通过一级缓存接收总线数据;在直接内存存取DMA数据传输启动时,将所述一级缓存接收的所述总线数据保存到二级缓存中,并将所述二级缓存中的所述总线数据保存到三级缓存中;所述三级缓存的容量大于所述二级缓存的容量;在将所述三级缓存存满时,中断所述DMA数据传输,向CPU发送DMA中断请求,以使所述CPU在接收到所述DMA中断请求后将所述三级缓存中保存的所述总线数据提取到本地磁盘中。优选地,所述一级缓存中包括多个设置有序号的一级缓存空间;所述通过一级缓存接收总线数据,包括:接收所述总线数据,并按照所述一级缓存空间的序号保存接收的所述总线数据,在将一个所述一级缓存空间存满后,再使用下一个所述一级缓存空间继续保存,直到将所有的所述一级缓存空间存满后,再重新按照所述一级缓存空间的序号保存接收的所述总线数据,覆盖每一个所述一级缓存空间中的原有数据。优选地,所述二级缓存中包括多个设置有序号的二级缓存空间;所述在直接内存存取DMA数据传输启动时,将所述一级缓存接收的所述总线数据保存到二级缓存中,包括:在所述一级缓存中的任意一个所述一级缓存空间被存满时,记录被存满的所述一级缓存空间的序号;在所述DMA数据传输启动时,检测所述二级缓存中是否存在可以保存数据的所述二级缓存空间;如果存在,判断上一次保存数据的所述二级缓存空间的序号,并从可以保存数据的所述二级缓存空间中选择与上一次保存数据的所述二级缓存空间不同的所述二级缓存空间,将被存满的所述一级缓存空间中的所述总线数据保存到所选择的所述二级缓存空间中。优选地,所述三级缓存中包括多个设置有序号的三级缓存空间;所述将所述二级缓存中的所述总线数据保存到三级缓存中,包括:检测所述三级缓存中是否存在尚未被存满的所述三级缓存空间;如果存在,在将被存满的所述一级缓存空间中的所述总线数据保存到所选择的所述二级缓存空间中后,将所选择的所述二级缓存空间中的所述总线数据保存到尚未被存满的所述三级缓存空间中。优选地,在所述向CPU发送DMA中断请求之后,还包括:检测所述三级缓存中的所述总线数据是否已被保存到所述本地磁盘中;如果是,则将所述三级缓存中的所述总线数据清空,并重新启动所述DMA数据传输。一种总线通信系统,包括:接收模块,用于通过一级缓存接收总线数据;保存模块,用于在直接内存存取DMA数据传输启动时,将所述一级缓存接收的所述总线数据保存到二级缓存中,并将所述二级缓存中的所述总线数据保存到三级缓存中;所述三级缓存的容量大于所述二级缓存的容量;中断模块,用于在将所述三级缓存存满时,中断所述DMA数据传输,向CPU发送DMA中断请求,以使所述CPU在接收到所述DMA中断请求后将所述三级缓存中保存的所述总线数据提取到本地磁盘中。优选地,所述一级缓存中包括多个设置有序号的一级缓存空间;所述接收模块,具体用于:接收所述总线数据,并按照所述一级缓存空间的序号保存接收的所述总线数据,在将一个所述一级缓存空间存满后,再使用下一个所述一级缓存空间继续保存,直到将所有的所述一级缓存空间存满后,再重新按照所述一级缓存空间的序号保存接收的所述总线数据,覆盖每一个所述一级缓存空间中的原有数据。优选地,所述二级缓存中包括多个设置有序号的二级缓存空间;所述保存模块,包括:记录单元,用于在所述一级缓存中的任意一个所述一级缓存空间被存满时,记录被存满的所述一级缓存空间的序号;第一检测单元,用于在所述DMA数据传输启动时,检测所述二级缓存中是否存在可以保存数据的所述二级缓存空间;选择单元,用于如果所述二级缓存中存在可以保存数据的所述二级缓存空间,判断上一次保存数据的所述二级缓存空间的序号,并从可以保存数据的所述二级缓存空间中选择与上一次保存数据的所述二级缓存空间不同的所述二级缓存空间,将被存满的所述一级缓存空间中的所述总线数据保存到所选择的所述二级缓存空间中。优选地,所述三级缓存中包括多个设置有序号的三级缓存空间;所述保存模块,还包括:第二检测单元,用于检测所述三级缓存中是否存在尚未被存满的所述三级缓存空间;保存单元,用于如果所述三级缓存中存在尚未被存满的所述三级缓存空间,在将被存满的所述一级缓存空间中的所述总线数据保存到所选择的所述二级缓存空间中后,将所选择的所述二级缓存空间中的所述总线数据保存到尚未被存满的所述三级缓存空间中。优选地,还包括:检测模块,用于检测所述三级缓存中的所述总线数据是否已被保存到所述本地磁盘中;重启模块,用于如果所述三级缓存中的所述总线数据已被保存到所述本地磁盘中,则将所述三级缓存中的所述总线数据清空,并重新启动所述DMA数据传输。由上可见,本申请提供的一种总线通信方法及系统,通过一级缓存接收总线数据;在DMA数据传输启动时,将所述一级缓存接收的所述总线数据保存到二级缓存中,并将所述二级缓存中的所述总线数据保存到三级缓存中本文档来自技高网...

【技术保护点】
一种总线通信方法,其特征在于,包括:通过一级缓存接收总线数据;在直接内存存取DMA数据传输启动时,将所述一级缓存接收的所述总线数据保存到二级缓存中,并将所述二级缓存中的所述总线数据保存到三级缓存中;所述三级缓存的容量大于所述二级缓存的容量;在将所述三级缓存存满时,中断所述DMA数据传输,向CPU发送DMA中断请求,以使所述CPU在接收到所述DMA中断请求后将所述三级缓存中保存的所述总线数据提取到本地磁盘中。

【技术特征摘要】
1.一种总线通信方法,其特征在于,包括:
通过一级缓存接收总线数据;
在直接内存存取DMA数据传输启动时,将所述一级缓存接收的所述总线
数据保存到二级缓存中,并将所述二级缓存中的所述总线数据保存到三级缓
存中;所述三级缓存的容量大于所述二级缓存的容量;
在将所述三级缓存存满时,中断所述DMA数据传输,向CPU发送DMA
中断请求,以使所述CPU在接收到所述DMA中断请求后将所述三级缓存中
保存的所述总线数据提取到本地磁盘中。
2.根据权利要求1所述的方法,其特征在于,所述一级缓存中包括多个
设置有序号的一级缓存空间;
所述通过一级缓存接收总线数据,包括:
接收所述总线数据,并按照所述一级缓存空间的序号保存接收的所述总
线数据,在将一个所述一级缓存空间存满后,再使用下一个所述一级缓存空
间继续保存,直到将所有的所述一级缓存空间存满后,再重新按照所述一级
缓存空间的序号保存接收的所述总线数据,覆盖每一个所述一级缓存空间中
的原有数据。
3.根据权利要求2所述的方法,其特征在于,所述二级缓存中包括多个
设置有序号的二级缓存空间;
所述在直接内存存取DMA数据传输启动时,将所述一级缓存接收的所述
总线数据保存到二级缓存中,包括:
在所述一级缓存中的任意一个所述一级缓存空间被存满时,记录被存满
的所述一级缓存空间的序号;
在所述DMA数据传输启动时,检测所述二级缓存中是否存在可以保存数
据的所述二级缓存空间;
如果存在,判断上一次保存数据的所述二级缓存空间的序号,并从可以
保存数据的所述二级缓存空间中选择与上一次保存数据的所述二级缓存空间
不同的所述二级缓存空间,将被存满的所述一级缓存空间中的所述总线数据
保存到所选择的所述二级缓存空间中。
4.根据权利要求3所述的方法,其特征在于,所述三级缓存中包括多个

\t设置有序号的三级缓存空间;
所述将所述二级缓存中的所述总线数据保存到三级缓存中,包括:
检测所述三级缓存中是否存在尚未被存满的所述三级缓存空间;
如果存在,在将被存满的所述一级缓存空间中的所述总线数据保存到所
选择的所述二级缓存空间中后,将所选择的所述二级缓存空间中的所述总线
数据保存到尚未被存满的所述三级缓存空间中。
5.根据权利要求1所述的方法,其特征在于,在所述向CPU发送DMA
中断请求之后,还包括:
检测所述三级缓存中的所述总线数据是否已被保存到所述本地磁盘中;
如果是,则将所述三级缓存中的所述总线数据清空,并重新启动所述
DMA数据传输。
6.一种总线通信系统,其特征在于,包括:
接收模块,用于通过一...

【专利技术属性】
技术研发人员:汪宇雷
申请(专利权)人:北京经纬恒润科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1