一种总线通信方法及系统的制作方法

文档序号:9910959阅读:552来源:国知局
一种总线通信方法及系统的制作方法
【技术领域】
[0001 ]本发明涉及数据通信技术领域,尤其涉及一种总线通信方法及系统。
【背景技术】
[0002]在高带宽数据通信中,例如在使用千兆以太网,PCIe通信协议的工况下,为了保证数据可被正确快速地接收,大多采用DMA(Direct Memory Access,直接内存存取)数据传输方式传输数据。
[0003]DMA是一种不经过CPU而直接从内存存取数据的数据交换模式,在DMA方式下,CPU只须向DMA控制器下达指令,让DMA控制器来处理数据的传送,底层硬件板卡在接收到数据后,将数据直接通过DMA数据传输方式存储到主机分配的DMA缓存中,数据传送完毕再通过DMA中断把信息反馈给CPU,CPU通过DMA中断感知到数据已经存放到DMA缓存后,便将此数据保存到本地磁盘,之后下一轮的DMA数据传输才能开始,这样可以避免CPU频繁访问底层硬件,在进行数据传输尤其是大数据量传输时可以很大程度上减轻(PU的资源占用率。
[0004]但是,由于每一轮的DMA数据传输完成后均需要CPU将数据保存到本地磁盘,当每轮DMA数据传输之间的间隔时间较短时,便需要CPU频繁地将数据从DMA缓存转移到本地磁盘,从而导致CPU负载和磁盘负载过高,无法及时处理其他线程任务,降低设备性能。

【发明内容】

[0005]本发明提供一种总线通信方法及系统,以降低CPU负载和磁盘负载,便于及时处理其他线程任务,提高设备性能。
[0006]为解决上述技术问题,本发明实施例提供以下技术方案:
[0007]一种总线通信方法,包括:
[0008]通过一级缓存接收总线数据;
[0009]在直接内存存取DMA数据传输启动时,将所述一级缓存接收的所述总线数据保存到二级缓存中,并将所述二级缓存中的所述总线数据保存到三级缓存中;所述三级缓存的容量大于所述二级缓存的容量;
[0010]在将所述三级缓存存满时,中断所述DMA数据传输,向CPU发送DMA中断请求,以使所述CPU在接收到所述DMA中断请求后将所述三级缓存中保存的所述总线数据提取到本地磁盘中。
[0011]优选地,所述一级缓存中包括多个设置有序号的一级缓存空间;
[0012]所述通过一级缓存接收总线数据,包括:
[0013]接收所述总线数据,并按照所述一级缓存空间的序号保存接收的所述总线数据,在将一个所述一级缓存空间存满后,再使用下一个所述一级缓存空间继续保存,直到将所有的所述一级缓存空间存满后,再重新按照所述一级缓存空间的序号保存接收的所述总线数据,覆盖每一个所述一级缓存空间中的原有数据。
[0014]优选地,所述二级缓存中包括多个设置有序号的二级缓存空间;
[0015]所述在直接内存存取DMA数据传输启动时,将所述一级缓存接收的所述总线数据保存到二级缓存中,包括:
[0016]在所述一级缓存中的任意一个所述一级缓存空间被存满时,记录被存满的所述一级缓存空间的序号;
[0017]在所述DMA数据传输启动时,检测所述二级缓存中是否存在可以保存数据的所述二级缓存空间;
[0018]如果存在,判断上一次保存数据的所述二级缓存空间的序号,并从可以保存数据的所述二级缓存空间中选择与上一次保存数据的所述二级缓存空间不同的所述二级缓存空间,将被存满的所述一级缓存空间中的所述总线数据保存到所选择的所述二级缓存空间中。
[0019]优选地,所述三级缓存中包括多个设置有序号的三级缓存空间;
[0020]所述将所述二级缓存中的所述总线数据保存到三级缓存中,包括:
[0021 ]检测所述三级缓存中是否存在尚未被存满的所述三级缓存空间;
[0022]如果存在,在将被存满的所述一级缓存空间中的所述总线数据保存到所选择的所述二级缓存空间中后,将所选择的所述二级缓存空间中的所述总线数据保存到尚未被存满的所述三级缓存空间中。
[0023]优选地,在所述向CPU发送DMA中断请求之后,还包括:
[0024]检测所述三级缓存中的所述总线数据是否已被保存到所述本地磁盘中;
[0025]如果是,则将所述三级缓存中的所述总线数据清空,并重新启动所述DMA数据传输。
[0026I 一种总线通信系统,包括:
[0027]接收模块,用于通过一级缓存接收总线数据;
[0028]保存模块,用于在直接内存存取DMA数据传输启动时,将所述一级缓存接收的所述总线数据保存到二级缓存中,并将所述二级缓存中的所述总线数据保存到三级缓存中;所述三级缓存的容量大于所述二级缓存的容量;
[0029]中断模块,用于在将所述三级缓存存满时,中断所述DMA数据传输,向CPU发送DMA中断请求,以使所述CHJ在接收到所述DMA中断请求后将所述三级缓存中保存的所述总线数据提取到本地磁盘中。
[0030]优选地,所述一级缓存中包括多个设置有序号的一级缓存空间;
[0031 ]所述接收模块,具体用于:
[0032]接收所述总线数据,并按照所述一级缓存空间的序号保存接收的所述总线数据,在将一个所述一级缓存空间存满后,再使用下一个所述一级缓存空间继续保存,直到将所有的所述一级缓存空间存满后,再重新按照所述一级缓存空间的序号保存接收的所述总线数据,覆盖每一个所述一级缓存空间中的原有数据。
[0033]优选地,所述二级缓存中包括多个设置有序号的二级缓存空间;
[0034]所述保存模块,包括:
[0035]记录单元,用于在所述一级缓存中的任意一个所述一级缓存空间被存满时,记录被存满的所述一级缓存空间的序号;
[0036]第一检测单元,用于在所述DMA数据传输启动时,检测所述二级缓存中是否存在可以保存数据的所述二级缓存空间;
[0037]选择单元,用于如果所述二级缓存中存在可以保存数据的所述二级缓存空间,判断上一次保存数据的所述二级缓存空间的序号,并从可以保存数据的所述二级缓存空间中选择与上一次保存数据的所述二级缓存空间不同的所述二级缓存空间,将被存满的所述一级缓存空间中的所述总线数据保存到所选择的所述二级缓存空间中。
[0038]优选地,所述三级缓存中包括多个设置有序号的三级缓存空间;
[0039]所述保存模块,还包括:
[0040]第二检测单元,用于检测所述三级缓存中是否存在尚未被存满的所述三级缓存空间;
[0041]保存单元,用于如果所述三级缓存中存在尚未被存满的所述三级缓存空间,在将被存满的所述一级缓存空间中的所述总线数据保存到所选择的所述二级缓存空间中后,将所选择的所述二级缓存空间中的所述总线数据保存到尚未被存满的所述三级缓存空间中。
[0042]优选地,还包括:
[0043]检测模块,用于检测所述三级缓存中的所述总线数据是否已被保存到所述本地磁盘中;
[0044]重启模块,用于如果所述三级缓存中的所述总线数据已被保存到所述本地磁盘中,则将所述三级缓存中的所述总线数据清空,并重新启动所述DMA数据传输。
[0045]由上可见,本申请提供的一种总线通信方法及系统,通过一级缓存接收总线数据;在DMA数据传输启动时,将所述一级缓存接收的所述总线数据保存到二级缓存中,并将所述二级缓存中的所述总线数据保存到三级缓存中;所述三级缓存的容量大于所述二级缓存的容量;在将所述三级缓存存满时,中断所述DMA数据传输,向CPU发送DMA中断请求,以使所述CPU在接收到所述DMA中断请求后将所述三级缓存中保存的所述总线数据提取到本地磁盘中。可见,本申请提供的方案,在二级缓存后增加了三级缓存,且三级缓存的容量大于二级缓存的容量,在三级缓存的容量存满时再向CPU发送DMA中断请求,相对于将总线数据从二级缓存转移到本地磁盘中,可以降低CPU转移总线数据的频率,从而降低CPU负载和磁盘负载,便于及时处理其他线程任务,提高设备性能。
【附图说明】
[0046]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0047]图1为本发明提供的一种总线通信方法的一个实施例的流程示意图;
[0048]图2为本发明提供的一种总
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1