CN105677592A - 一种总线通信方法及系统 - Google Patents
一种总线通信方法及系统 Download PDFInfo
- Publication number
- CN105677592A CN105677592A CN201511032625.7A CN201511032625A CN105677592A CN 105677592 A CN105677592 A CN 105677592A CN 201511032625 A CN201511032625 A CN 201511032625A CN 105677592 A CN105677592 A CN 105677592A
- Authority
- CN
- China
- Prior art keywords
- grades
- level cache
- cache space
- data
- cache
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/28—DMA
- G06F2213/2806—Space or buffer allocation for DMA transfers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请公开了一种总线通信方法及系统,通过一级缓存接收总线数据;在DMA数据传输启动时,将一级缓存接收的总线数据保存到二级缓存中,并将二级缓存中的总线数据保存到三级缓存中;三级缓存的容量大于二级缓存的容量;在将三级缓存存满时,中断DMA数据传输,向CPU发送DMA中断请求,以使CPU在接收到DMA中断请求后将三级缓存中保存的总线数据提取到本地磁盘中。本申请提供的方案,在二级缓存后增加了三级缓存,且三级缓存的容量大于二级缓存的容量,在三级缓存的容量存满时再向CPU发送DMA中断请求,可以降低CPU转移总线数据的频率,从而降低CPU负载和磁盘负载,便于及时处理其他线程任务,提高设备性能。
Description
技术领域
本发明涉及数据通信技术领域,尤其涉及一种总线通信方法及系统。
背景技术
在高带宽数据通信中,例如在使用千兆以太网,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数据传输,向CPU发送DMA中断请求,以使所述CPU在接收到所述DMA中断请求后将所述三级缓存中保存的所述总线数据提取到本地磁盘中。可见,本申请提供的方案,在二级缓存后增加了三级缓存,且三级缓存的容量大于二级缓存的容量,在三级缓存的容量存满时再向CPU发送DMA中断请求,相对于将总线数据从二级缓存转移到本地磁盘中,可以降低CPU转移总线数据的频率,从而降低CPU负载和磁盘负载,便于及时处理其他线程任务,提高设备性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种总线通信方法的一个实施例的流程示意图;
图2为本发明提供的一种总线通信方法的另一个实施例的流程示意图;
图3为本申请实施例提供的总线通信方法的整体交互逻辑示意图;
图4为本申请实施例提供的一级缓存的数据处理流程示意图;
图5为本申请实施例提供的二级缓存的数据处理流程示意图;
图6为本申请实施例提供的三级缓存的数据处理流程示意图;
图7为本发明提供的一种总线通信系统的结构示意图。
具体实施方式
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图对本申请的技术方案进行详细说明:
图1为本发明提供的一种总线通信方法的一个实施例的流程示意图。
参照图1所示,本申请实施例提供的总线通信方法,应用于总线通信系统中,包括如下步骤:
S101:通过一级缓存接收总线数据;
在本申请实施例中,所述一级缓存可以为硬件缓存,在直接内存存取DMA数据传输被中断时,或者在直接内存存取DMA数据传输过程中,均可以通过硬件板卡的一级缓存接收并保存外部总线输入的总线数据。
S102:在直接内存存取DMA数据传输启动时,将所述一级缓存接收的所述总线数据保存到二级缓存中,并将所述二级缓存中的所述总线数据保存到三级缓存中;
所述三级缓存的容量大于所述二级缓存的容量;
在本申请实施例中,通过一级缓存保存外部总线输入的总线数据,然后通过DMA控制器如FPGA内部的DMA传输核与二级缓存进行交互,将总线数据保存在二级缓存中,这里的二级缓存可以为DMA缓存。DMA传输核和一级缓存可以通过一级外反馈的信号进行同步,同时二级缓存内部通过可以二级内反馈的信号保证内部乒乓同步。
在现有技术中,因受操作系统限制,二级缓存比如DMA缓存不能分配很大,而如果每完成一次DMA传输就将总线数据保存到本次磁盘中就会导致系统的CPU和本地磁盘IO负载较高。
在本申请实施例中,还建立了三级缓存,这里的三级缓存可以为内存缓存,用于同二级缓存如DMA缓存进行数据交互。同样三级缓存也采用二级外反馈的信号同二级缓存进行同步,同时采用三级内反馈的信号保证内部乒乓同步。
S103:在将所述三级缓存存满时,中断所述DMA数据传输,向CPU发送DMA中断请求,以使所述CPU在接收到所述DMA中断请求后将所述三级缓存中保存的所述总线数据提取到本地磁盘中。
在本申请实施例中,在将所述三级缓存存满时,DMA控制器向CPU发送DMA中断请求,最后由CPU将三级缓存中的总线数据保存到本地磁盘中。
三级缓存如内存缓存一般可分配较大,可以是二级缓存如DMA缓存大小的十倍以上,因此,在三级缓存的容量存满时再向CPU发送DMA中断请求,相对于将总线数据从二级缓存转移到本地磁盘中,可以降低CPU转移总线数据的频率,从而降低CPU负载和磁盘负载,便于及时处理其他线程任务,提高设备性能。
图2为本发明提供的一种总线通信方法的另一个实施例的流程示意图。
参照图2所示,本申请实施例提供的总线通信方法,应用于总线通信系统中,包括如下步骤:
S201:通过一级缓存中的多个设置有序号的一级缓存空间接收总线数据;
在本申请实施例中,所述一级缓存中包括多个设置有序号的一级缓存空间;所述通过一级缓存接收总线数据,可以包括:接收所述总线数据,并按照所述一级缓存空间的序号保存接收的所述总线数据,在将一个所述一级缓存空间存满后,再使用下一个所述一级缓存空间继续保存,直到将所有的所述一级缓存空间存满后,再重新按照所述一级缓存空间的序号保存接收的所述总线数据,覆盖每一个所述一级缓存空间中的原有数据。
参照图3所示,为本申请实施例提供的总线通信方法的整体交互逻辑示意图。以一级缓存中设置有两个一级缓存空间RAM1和RAM2为例,在接收总线数据时,由DMA控制器比如FPGA数据处理前端将外部总线发送的总线数据转换为可存储的数据块,然后使用一级缓存对数据块进行缓存接收。
具体流程参见图4所示,为本申请实施例提供的一级缓存的数据处理流程示意图。FPGA数据处理前端在接收到总线数据时,可以首先询问RAM1是否满,如果不满,则将数据存入RAM1空间中,如果已满,则询问RAM2空间是否满,如果不满,则将数据存入RAM2,如果RAM2也满,则将数据覆盖RAM1空间,保证数据能继续传输,只是将旧有数据覆盖。即,在通过所述一级缓存接收所述总线数据时,检测所述一级缓存中的第一空间RAM1是否已被存满;在所述第一空间RAM1尚未被存满时,将接收的所述总线数据保存到所述第一空间RAM1中;在所述第一空间RAM1已经被存满时,判断一级缓存中的第二空间RAM2是否已被存满;在所述第二空间RAM2尚未被存满时,将接收的所述总线数据保存到所述第二空间RAM2中;在所述第二空间RAM2已经被存满时,将接收的所述总线数据保存到所述第一空间RAM1中,覆盖所述第一空间RAM1中的原有数据;
在RAM1或RAM2满后,DMA传输核开始工作,记录当前空间满的RAM1或RAM2的序号,之后根据二级缓存的反馈进行后续工作,如果二级缓存的标识位寄存器R1值为0,说明二级缓存准备完成,则DMA传输启动并向CPU发起中断请求,在传输完成后,清空当前使用的RAM1或RAM2,如果R1值为1,则说明二级缓存尚未准备好,经过短暂固定延时后,再次查询,直至此次传输结束。
S202:在直接内存存取DMA数据传输启动时,将所述一级缓存的所述一级缓存空间中接收的所述总线数据保存到二级缓存的多个二级缓存空间中,并将所述二级缓存的多个二级缓存空间中的所述总线数据保存到三级缓存的多个三级缓存空间中;
在本申请实施例中,所述二级缓存中包括多个设置有序号的二级缓存空间;所述在所述DMA数据传输启动时,将所述一级缓存接收的所述总线数据保存到二级缓存中,可以包括:在所述一级缓存中的任意一个所述一级缓存空间被存满时,记录被存满的所述一级缓存空间的序号;在所述DMA数据传输启动时,检测所述二级缓存中是否存在可以保存数据的所述二级缓存空间;如果存在,判断上一次保存数据的所述二级缓存空间的序号,并从可以保存数据的所述二级缓存空间中选择与上一次保存数据的所述二级缓存空间不同的所述二级缓存空间,将被存满的所述一级缓存空间中的所述总线数据保存到所选择的所述二级缓存空间中。
参见图5所示,为本申请实施例提供的二级缓存的数据处理流程示意图。以二级缓存中设置有两个二级缓存空间DMA_buffer_1和DMA_buffer_2为例,在本申请实施例中,二级缓存中的相关数据处理均放在中断处理函数中。二级缓存分为输入控制接口和输出控制接口两层。当操作系统接收到有效中断后,在输入控制接口中,首先将R1置为1,并由中断前处理进行一些全局中断关闭、保存当前处理堆栈线程和判断中断类型等动作,然后判断当前是否存在可写入总线数据的二级缓存空间,如果不存在,则在短暂延时后再次判断,如果存在,则判断上次写入的二级缓存空间的序号,如果上次写入的二级缓存空间为DMA_buffer_1,则此次应往DMA_buffer_2中写入数据,反之则往DMA_buffer_1中写入数据,判断出结果后,则等待接收到对应的信号量(如果上次写入的二级缓存空间为DMA_buffer_1,则等待信号量A2,反之则等待信号量A1)后,将总线数据存入此次应写入的二级缓存空间中。在输出控制接口中,等待数据存入二级缓存空间结束后,释放信号量(如果上次写入的二级缓存空间为DMA_buffer_1,则释放信号量B2,反之则释放信号量B1),告知三级缓存可开始存储对应的二级缓存空间的数据,等待三级缓存保存数据完成并释放信号量(如果上次写入的二级缓存空间为DMA_buffer_1,则释放信号量C2,反之则释放信号量C1)后,释放对应信号量(如果上次写入的二级缓存空间为DMA_buffer_1,则释放信号量A2,反之则释放信号量A1),之后再进行中断后处理,包括打开全局中断、恢复中断处理前的堆栈现场等动作。
在本申请实施例中,所述三级缓存中包括多个设置有序号的三级缓存空间;所述将所述二级缓存中的所述总线数据保存到三级缓存中,可以包括:检测所述三级缓存中是否存在尚未被存满的所述三级缓存空间;如果存在,在将被存满的所述一级缓存空间中的所述总线数据保存到所选择的所述二级缓存空间中后,将所选择的所述二级缓存空间中的所述总线数据保存到尚未被存满的所述三级缓存空间中。
参见图6所示,为本申请实施例提供的三级缓存的数据处理流程示意图。以三级缓存中设置有两个三级缓存空间MEM_BUFFER_1和MEM_BUFFER_2为例,三级缓存中也分为输入控制接口和输出控制接口两层。在输入控制接口中,首先等待二级缓存释放信号量B1,之后再等待输出控制接口释放的数据保存信号量D,然后按顺序判断MEM_BUFFER_1或者MEM_BUFFER_2是否满,如果未满,则将数据保存到三级缓存中,并同时释放信号量C1。
S203:在将所述三级缓存中的任意一个三级缓存空间存满时,中断所述DMA数据传输,向CPU发送DMA中断请求,以使所述CPU在接收到所述DMA中断请求后将所述三级缓存中存满的三级缓存空间中保存的所述总线数据提取到本地磁盘中。
本申请实施例中,如果三级缓存中的任意一个三级缓存空间已满,则向CPU发送DMA中断请求,以使所述CPU在接收到所述DMA中断请求后将三级缓存中的总线数据保存到本地磁盘中。在将总线数据由三级缓存保存到本次磁盘的过程中,二进制数据流不断地输出到本地磁盘中,中间不允许有另外的线程将数据保存到本地磁盘中,所以需要使用自锁的方法屏蔽其它保存磁盘的动作。
当总线数据保存到本地磁盘成功后,还可以检测所述三级缓存中存满的三级缓存空间中保存的所述总线数据是否已被保存到所述本地磁盘中,如果是,首先清空已满的三级缓存空间,然后释放信号量D,以保证三级缓存可继续工作,重新启动所述DMA数据传输。同理,待下一次二级缓存收到数据后,三级缓存输入接口收到信号量B2,再将数据保存到到未满的三级缓存空间中,之后释放信号量C2,使二级缓存可继续工作。如此周而复始,形成稳定可靠的三级缓存乒乓操作。
需要说明的是,在本申请实施例的上文描述中,在DMA数据传输启动前,需要分配内存资源,初始化信号量,挂载中断处理函数,启动数据保存线程。比如:
分配内存资源:通信启动前,系统分配两块一级缓存空间,分别标识为RAM1和RAM2;再分配两块二级缓存空间,分别标识为DMA_BUFFER_1和DMA_BUFFER_2,设置大小,将其锁定等,使两块缓存正确初始化;另外分配两块三级缓存空间,标识为MEM_BUFFER_1和MEM_BUFFER_2,其大小可以为二级缓存空间大小的十倍以上;
初始化信号量:初始化4组,共7个信号量,分别是A1,A2,B1,B2,C1,C2,D;
挂载中断处理函数:中断处理函数负责将总线数据存储到二级缓存空间中,以及协调两块二级缓存空间有序工作。系统将中断处理函数挂载到DMA中断上,一旦收到DMA中断,中断处理函数便被触发自动运行;
启动数据保存线程:数据保存线程负责将二级缓存空间中的总线数据保存到三级缓存空间中,在线程运行过程中,一方面要与中断处理函数保持同步,避免中断进入太快,导致二级缓存空间中的总线数据没有被及时读取,另一方面要将已满的三级缓存空间中的总线数据及时输出到本地磁盘,此过程中不允许并发的输出到磁盘的操作。
现有技术中,每次DMA数据传输完成后,CPU将总线数据保存到本地磁盘,当间隔时间短时,CPU便会频繁地将总线数据从DMA缓存转移到本地磁盘,转移过程所需时间随单次通信数据量变大而增大,从而导致CPU和IO负载过高,一方面CPU无法及时处理其他线程任务,另一方面由于单次DMA处理时间加大,导致下一次DMA中断有可能被主机丢失,需要传输的数据便丢失,数据通信状况便因此恶化。
本申请实施例提供的技术方案,利用硬件板卡缓存读写速度大于内存读写速度,内存读写速度大于本地硬盘读写速度的存储介质读写速度梯度效应,最大限度利用高速存储介质的存储资源,减少不同等级存储介质之间的读写,尤其减少频繁读写本地磁盘的次数,从而达到减少系统IO开销的效果,使通信效率得到提高,并且采用多级乒乓缓存结合相应的同步反馈机制,使得数据传输质量得到提高,保证在恶劣情况下数据接收的正确性,可以大大减小丢包率。
图7为本发明提供的一种总线通信系统的结构示意图。
参照图7所示,本申请实施例提供的总线通信系统,包括:
接收模块1,用于通过一级缓存接收总线数据;
保存模块2,用于在直接内存存取DMA数据传输启动时,将所述一级缓存接收的所述总线数据保存到二级缓存中,并将所述二级缓存中的所述总线数据保存到三级缓存中;所述三级缓存的容量大于所述二级缓存的容量;
中断模块3,用于在将所述三级缓存存满时,中断所述DMA数据传输,向CPU发送DMA中断请求,以使所述CPU在接收到所述DMA中断请求后将所述三级缓存中保存的所述总线数据提取到本地磁盘中。
优选地,所述一级缓存中可以包括多个设置有序号的一级缓存空间;
所述接收模块1,具体用于:
接收所述总线数据,并按照所述一级缓存空间的序号保存接收的所述总线数据,在将一个所述一级缓存空间存满后,再使用下一个所述一级缓存空间继续保存,直到将所有的所述一级缓存空间存满后,再重新按照所述一级缓存空间的序号保存接收的所述总线数据,覆盖每一个所述一级缓存空间中的原有数据。
优选地,所述二级缓存中可以包括多个设置有序号的二级缓存空间;
所述保存模块2,包括:
记录单元,用于在所述一级缓存中的任意一个所述一级缓存空间被存满时,记录被存满的所述一级缓存空间的序号;
第一检测单元,用于在所述DMA数据传输启动时,检测所述二级缓存中是否存在可以保存数据的所述二级缓存空间;
选择单元,用于如果所述二级缓存中存在可以保存数据的所述二级缓存空间,判断上一次保存数据的所述二级缓存空间的序号,并从可以保存数据的所述二级缓存空间中选择与上一次保存数据的所述二级缓存空间不同的所述二级缓存空间,将被存满的所述一级缓存空间中的所述总线数据保存到所选择的所述二级缓存空间中。
优选地,所述三级缓存中可以包括多个设置有序号的三级缓存空间;
所述保存模块2,还包括:
第二检测单元,用于检测所述三级缓存中是否存在尚未被存满的所述三级缓存空间;
保存单元,用于如果所述三级缓存中存在尚未被存满的所述三级缓存空间,在将被存满的所述一级缓存空间中的所述总线数据保存到所选择的所述二级缓存空间中后,将所选择的所述二级缓存空间中的所述总线数据保存到尚未被存满的所述三级缓存空间中。
优选地,还可以包括:
检测模块,用于检测所述三级缓存中的所述总线数据是否已被保存到所述本地磁盘中;
重启模块,用于如果所述三级缓存中的所述总线数据已被保存到所述本地磁盘中,则将所述三级缓存中的所述总线数据清空,并重新启动所述DMA数据传输。
需要说明的是,本实施例的总线通信系统可以采用上述方法实施例中的总线通信方法,可以用于实现上述方法实施例中的全部技术方案,其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实施例中的相关描述,此处不再赘述。
由上可见,本申请提供的一种总线通信方法及系统,在直接内存存取DMA数据传输被中断时,通过一级缓存接收总线数据;在所述DMA数据传输启动时,将所述一级缓存接收的所述总线数据保存到二级缓存中,并将所述二级缓存中的所述总线数据保存到三级缓存中;所述三级缓存的容量大于所述二级缓存的容量;在将所述三级缓存存满时,中断所述DMA数据传输,向CPU发送DMA中断请求,以使所述CPU在接收到所述DMA中断请求后将所述三级缓存中保存的所述总线数据提取到本地磁盘中。可见,本申请提供的方案,在二级缓存后增加了三级缓存,且三级缓存的容量大于二级缓存的容量,在三级缓存的容量存满时再向CPU发送DMA中断请求,相对于将总线数据从二级缓存转移到本地磁盘中,可以降低CPU转移总线数据的频率,从而降低CPU负载和磁盘负载,便于及时处理其他线程任务,提高设备性能。
为了描述的方便,描述以上系统时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种总线通信方法,其特征在于,包括:
通过一级缓存接收总线数据;
在直接内存存取DMA数据传输启动时,将所述一级缓存接收的所述总线数据保存到二级缓存中,并将所述二级缓存中的所述总线数据保存到三级缓存中;所述三级缓存的容量大于所述二级缓存的容量;
在将所述三级缓存存满时,中断所述DMA数据传输,向CPU发送DMA中断请求,以使所述CPU在接收到所述DMA中断请求后将所述三级缓存中保存的所述总线数据提取到本地磁盘中。
2.根据权利要求1所述的方法,其特征在于,所述一级缓存中包括多个设置有序号的一级缓存空间;
所述通过一级缓存接收总线数据,包括:
接收所述总线数据,并按照所述一级缓存空间的序号保存接收的所述总线数据,在将一个所述一级缓存空间存满后,再使用下一个所述一级缓存空间继续保存,直到将所有的所述一级缓存空间存满后,再重新按照所述一级缓存空间的序号保存接收的所述总线数据,覆盖每一个所述一级缓存空间中的原有数据。
3.根据权利要求2所述的方法,其特征在于,所述二级缓存中包括多个设置有序号的二级缓存空间;
所述在直接内存存取DMA数据传输启动时,将所述一级缓存接收的所述总线数据保存到二级缓存中,包括:
在所述一级缓存中的任意一个所述一级缓存空间被存满时,记录被存满的所述一级缓存空间的序号;
在所述DMA数据传输启动时,检测所述二级缓存中是否存在可以保存数据的所述二级缓存空间;
如果存在,判断上一次保存数据的所述二级缓存空间的序号,并从可以保存数据的所述二级缓存空间中选择与上一次保存数据的所述二级缓存空间不同的所述二级缓存空间,将被存满的所述一级缓存空间中的所述总线数据保存到所选择的所述二级缓存空间中。
4.根据权利要求3所述的方法,其特征在于,所述三级缓存中包括多个设置有序号的三级缓存空间;
所述将所述二级缓存中的所述总线数据保存到三级缓存中,包括:
检测所述三级缓存中是否存在尚未被存满的所述三级缓存空间;
如果存在,在将被存满的所述一级缓存空间中的所述总线数据保存到所选择的所述二级缓存空间中后,将所选择的所述二级缓存空间中的所述总线数据保存到尚未被存满的所述三级缓存空间中。
5.根据权利要求1所述的方法,其特征在于,在所述向CPU发送DMA中断请求之后,还包括:
检测所述三级缓存中的所述总线数据是否已被保存到所述本地磁盘中;
如果是,则将所述三级缓存中的所述总线数据清空,并重新启动所述DMA数据传输。
6.一种总线通信系统,其特征在于,包括:
接收模块,用于通过一级缓存接收总线数据;
保存模块,用于在直接内存存取DMA数据传输启动时,将所述一级缓存接收的所述总线数据保存到二级缓存中,并将所述二级缓存中的所述总线数据保存到三级缓存中;所述三级缓存的容量大于所述二级缓存的容量;
中断模块,用于在将所述三级缓存存满时,中断所述DMA数据传输,向CPU发送DMA中断请求,以使所述CPU在接收到所述DMA中断请求后将所述三级缓存中保存的所述总线数据提取到本地磁盘中。
7.根据权利要求6所述的系统,其特征在于,所述一级缓存中包括多个设置有序号的一级缓存空间;
所述接收模块,具体用于:
接收所述总线数据,并按照所述一级缓存空间的序号保存接收的所述总线数据,在将一个所述一级缓存空间存满后,再使用下一个所述一级缓存空间继续保存,直到将所有的所述一级缓存空间存满后,再重新按照所述一级缓存空间的序号保存接收的所述总线数据,覆盖每一个所述一级缓存空间中的原有数据。
8.根据权利要求7所述的系统,其特征在于,所述二级缓存中包括多个设置有序号的二级缓存空间;
所述保存模块,包括:
记录单元,用于在所述一级缓存中的任意一个所述一级缓存空间被存满时,记录被存满的所述一级缓存空间的序号;
第一检测单元,用于在所述DMA数据传输启动时,检测所述二级缓存中是否存在可以保存数据的所述二级缓存空间;
选择单元,用于如果所述二级缓存中存在可以保存数据的所述二级缓存空间,判断上一次保存数据的所述二级缓存空间的序号,并从可以保存数据的所述二级缓存空间中选择与上一次保存数据的所述二级缓存空间不同的所述二级缓存空间,将被存满的所述一级缓存空间中的所述总线数据保存到所选择的所述二级缓存空间中。
9.根据权利要求8所述的系统,其特征在于,所述三级缓存中包括多个设置有序号的三级缓存空间;
所述保存模块,还包括:
第二检测单元,用于检测所述三级缓存中是否存在尚未被存满的所述三级缓存空间;
保存单元,用于如果所述三级缓存中存在尚未被存满的所述三级缓存空间,在将被存满的所述一级缓存空间中的所述总线数据保存到所选择的所述二级缓存空间中后,将所选择的所述二级缓存空间中的所述总线数据保存到尚未被存满的所述三级缓存空间中。
10.根据权利要求6所述的系统,其特征在于,还包括:
检测模块,用于检测所述三级缓存中的所述总线数据是否已被保存到所述本地磁盘中;
重启模块,用于如果所述三级缓存中的所述总线数据已被保存到所述本地磁盘中,则将所述三级缓存中的所述总线数据清空,并重新启动所述DMA数据传输。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511032625.7A CN105677592A (zh) | 2015-12-31 | 2015-12-31 | 一种总线通信方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511032625.7A CN105677592A (zh) | 2015-12-31 | 2015-12-31 | 一种总线通信方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105677592A true CN105677592A (zh) | 2016-06-15 |
Family
ID=56298580
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511032625.7A Pending CN105677592A (zh) | 2015-12-31 | 2015-12-31 | 一种总线通信方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105677592A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106951380A (zh) * | 2017-03-17 | 2017-07-14 | 山东浪潮商用系统有限公司 | 一种客户端、服务端、数据传输方法及系统 |
WO2018121263A1 (en) * | 2016-12-30 | 2018-07-05 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for performing communication between peripheral devices of mobile terminal and mobile terminal |
CN109783209A (zh) * | 2018-11-28 | 2019-05-21 | 四川商通实业有限公司 | 一种多级缓存提高服务器处理效率的方法及系统 |
CN109815164A (zh) * | 2018-12-18 | 2019-05-28 | 航天信息股份有限公司 | 一种实现设备离线状态下的数据缓存的方法及系统 |
CN112069095A (zh) * | 2020-09-09 | 2020-12-11 | 北京锐马视讯科技有限公司 | Ddr3读写传输方法和装置 |
CN117827709A (zh) * | 2024-03-05 | 2024-04-05 | 龙芯中科(北京)信息技术有限公司 | 直接内存访问的实现方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100161896A1 (en) * | 2008-12-18 | 2010-06-24 | International Business Machines Corporation | Direct Memory Access Transfer Efficiency |
CN103034538A (zh) * | 2012-12-24 | 2013-04-10 | 珠海拓普智能电气股份有限公司 | 一种嵌入式操作系统中驱动程序的多级缓存处理方法 |
CN104778138A (zh) * | 2015-04-20 | 2015-07-15 | 中国科学院光电技术研究所 | 一种内核多线程直接存储驱动实现方法 |
-
2015
- 2015-12-31 CN CN201511032625.7A patent/CN105677592A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100161896A1 (en) * | 2008-12-18 | 2010-06-24 | International Business Machines Corporation | Direct Memory Access Transfer Efficiency |
CN103034538A (zh) * | 2012-12-24 | 2013-04-10 | 珠海拓普智能电气股份有限公司 | 一种嵌入式操作系统中驱动程序的多级缓存处理方法 |
CN104778138A (zh) * | 2015-04-20 | 2015-07-15 | 中国科学院光电技术研究所 | 一种内核多线程直接存储驱动实现方法 |
Non-Patent Citations (1)
Title |
---|
石朝林: "《dsPIC数字信号控制器入门与实战.入门篇》", 31 August 2009 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018121263A1 (en) * | 2016-12-30 | 2018-07-05 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for performing communication between peripheral devices of mobile terminal and mobile terminal |
US10635608B2 (en) | 2016-12-30 | 2020-04-28 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for performing communication between peripheral devices of mobile terminal and mobile terminal |
CN106951380A (zh) * | 2017-03-17 | 2017-07-14 | 山东浪潮商用系统有限公司 | 一种客户端、服务端、数据传输方法及系统 |
CN109783209A (zh) * | 2018-11-28 | 2019-05-21 | 四川商通实业有限公司 | 一种多级缓存提高服务器处理效率的方法及系统 |
CN109783209B (zh) * | 2018-11-28 | 2023-08-22 | 四川商通实业有限公司 | 一种多级缓存提高服务器处理效率的方法及系统 |
CN109815164A (zh) * | 2018-12-18 | 2019-05-28 | 航天信息股份有限公司 | 一种实现设备离线状态下的数据缓存的方法及系统 |
CN112069095A (zh) * | 2020-09-09 | 2020-12-11 | 北京锐马视讯科技有限公司 | Ddr3读写传输方法和装置 |
CN112069095B (zh) * | 2020-09-09 | 2022-01-28 | 北京锐马视讯科技有限公司 | Ddr3读写传输方法和装置 |
CN117827709A (zh) * | 2024-03-05 | 2024-04-05 | 龙芯中科(北京)信息技术有限公司 | 直接内存访问的实现方法、装置、设备及存储介质 |
CN117827709B (zh) * | 2024-03-05 | 2024-05-03 | 龙芯中科(北京)信息技术有限公司 | 直接内存访问的实现方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105677592A (zh) | 一种总线通信方法及系统 | |
EP3754511A1 (en) | Multi-protocol support for transactions | |
CN102648455B (zh) | 服务器和流控制程序 | |
US10282132B2 (en) | Methods and systems for processing PRP/SGL entries | |
US20160132541A1 (en) | Efficient implementations for mapreduce systems | |
US11681625B2 (en) | Receive buffer management | |
CN105511954A (zh) | 一种报文处理方法及装置 | |
KR20140048186A (ko) | 메모리 콘트롤러와 이 메모리 콘트롤러의 작동방법 | |
US11334503B2 (en) | Handling an input/output store instruction | |
CN106528893B (zh) | 数据同步方法及装置 | |
CN103946803A (zh) | 具有高效工作排队的处理器 | |
CN112650558B (zh) | 数据处理方法、装置、可读介质和电子设备 | |
CN102541468A (zh) | 虚拟化环境下的脏数据回写系统 | |
US10338822B2 (en) | Systems and methods for non-uniform memory access aligned I/O for virtual machines | |
US20210311891A1 (en) | Handling an input/output store instruction | |
CN111813547B (zh) | 基于dpdk的数据包处理方法及装置 | |
CN107294865B (zh) | 一种软件交换机的负载均衡方法及软件交换机 | |
CN102750245B (zh) | 报文接收方法、报文接收模块、装置及系统 | |
CN104049955A (zh) | Cache一致性多级流水线处理方法及装置 | |
US20170039140A1 (en) | Network storage device for use in flash memory and processing method therefor | |
CN110324204A (zh) | 一种在fpga中实现的高速正则表达式匹配引擎及方法 | |
US8671230B2 (en) | Data transfer device and data transfer method | |
US9720826B1 (en) | Systems and methods to distributively process a plurality of data sets stored on a plurality of memory modules | |
CN105183398B (zh) | 一种存储设备、电子设备及数据处理方法 | |
CN106598742B (zh) | 一种ssd主控内部负载均衡系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160615 |