一种缓存动态分配的方法以及系统与流程

文档序号:12182660阅读:1891来源:国知局
一种缓存动态分配的方法以及系统与流程

本发明涉及一种缓存动态分配的方法以及系统。



背景技术:

所谓数据帧,就是数据链路层的协议数据单元,它包括三部分:帧头,数据,帧尾。其中,帧头和帧尾包含一些必要的控制信息,如同步信息、地址信息、差错控制信息等;数据部分则包含网络层传下来的数据,比如IP数据报文;在发送端,数据链路层把网络层传下来的数据封装成帧,然后发送到链路上去;在接收端,数据链路层把收到的帧中的数据取出并交给网络层。不同的数据链路层协议对应着不同的帧,所以,帧有多种,比如PPP帧、MAC帧等,其具体格式也不尽相同。

如下图1所示,待发送数据是以帧的形式存放在内存当中,DMAC通过接口将待发送数据从内存搬移到发送缓存当中,发送控制模块从发送缓存当中取出待发送数据进行发送。

缓存欠载(Underrun):正在发送的数据帧,由于当前数据帧还没有发送结束,但是发送数据缓存内没有待发送数据时,这种现象称之为Underrun。在数据传输系统当中,发生这种现象会严重影响传输效率,需要尽最大努力杜绝这种现象发生。

数据存储转发:存储转发是指将内存中的一帧数据搬移到发送缓存当中后,发送控制模块才开始发送数据,这种方式可以完全杜绝Underrun现象。但是它要求发送缓存至少能存一帧数据,因此需要的缓存容量比较大。如果发送的通道数量增多,那么就要求发送缓存的数量相应增大。

数据分片传输:传统的分片传输是指当发送缓存内有数据时,发送控制模块就开始往外发送数据。这种做法存在一种危险,当发送缓存内只有少量数据时,就开始往外发送数据,此时,如果DMAC由于接口带宽受限制,不能及时往缓存内写待发送数据,就很容易造成缓存欠载(Underrun)。

DMAC:DMA(Direct Memory Access Controller,直接内存存取控制器),它可以主动发起对内存的直接访问,对内存直接读写。

接口:这里说的接口是指CPU与外部之间的通讯接口。例如:PCI接口、PCIE接口等。

数据帧发送状态:当前数据帧处于正在发送状态,此时称数据帧处于发送状态;如果一帧数据发送结束,则称之为处于空闲状态。

多通道复用端口:这里是指一个端口有指定的数据传输速率,但在不同的时间段分配给不同的通道使用。

时隙分配:这里是指在一定时间段内,划分多个不同的时间片,将该时间片称之为时隙,多个时隙构成了这样的一个时间段。将每个时隙设置上通道号,这样的设置称之为时隙分配。多通道复用的端口,是通过时隙分配达到不同的通道分配不同的带宽。时隙分配越多的通道,所获得端口的带宽的百分比就越大。如CE1当中,数据带宽为2.048Mbit/S。即,约488ns传输1bit数据。一般将125us(8K)指定时间段,分32等分,每个等分为1个时隙,可以分配给1个通道。

现有的缓存分配方法,一般是每个通道分配固定的缓存大小。当通道数增加时,就会造成总的缓存需求增加,这样做法有以下几个缺点:

如果每个通道都采用存储转发的方式,那么通道数多的时候,就会导致需要的缓存容量非常大,这将会直接导致成本的增加;

如果每个通道都采用分片传输的方式,容易造成缓存大小与带宽不匹配。特别是在长帧(帧长度大于缓存容量)传输时,若某个通道分配的时隙多,那么就会造成读缓存的速度增大,就会造成出现Underrun的几率增大;若某个通道分配的时隙少,那么就会造成读缓存的速度慢,这样相对速率快的通道,分配给速率低的通道的缓存就有可能造成浪费;若某个通道在某些环境下不使用,那么就会造成这个通道的缓存浪费。



技术实现要素:

本发明要解决的技术问题,在于提供一种缓存动态分配的方法以及系统,通过动态分配各通道的缓存,将速率快的通道多分配一些缓存,而将速率低的通道少分配一些缓存,未使用的通道不分配缓存,可以大大减少出现缓存欠载的几率及缓存的浪费。

本发明之一是这样实现的:一种缓存动态分配的方法,包括如下步骤:

步骤1、获取端口的时隙配置表;

步骤2、根据所述时隙配置表分配每个通道的缓存。

进一步地,所述时隙配置表包括每个通道分配的时隙个数。

进一步地,所述步骤2进一步具体为:将总缓存除以时隙总数得到平均值,之后将每个通道分配的时隙个数乘以平均值得到每个通道所需分配的缓存值,根据得到的缓存值对每个通道进行分配。

本发明之二是这样实现的:一种缓存动态分配的系统,包括如下模块:

获取模块,获取端口的时隙配置表;

分配模块,根据所述时隙配置表分配每个通道的缓存。

进一步地,所述时隙配置表包括每个通道分配的时隙个数,以及时隙总数。

进一步地,所述分配模块进一步具体为:将总缓存除以时隙总数得到平均值,之后将每个通道分配的时隙个数乘以平均值得到每个通道所需分配的缓存值,根据得到的缓存值对每个通道进行分配。

本发明具有如下优点:本发明一种缓存动态分配的方法以及系统,通过动态分配各通道的缓存,将速率快的通道多分配一些缓存,而将速率低的通道少分配一些缓存,未使用的通道不分配缓存,合理地分配有限的缓存资源,避免缓存的浪费,同时可以大大降低数据传输过程当中出现Underrun的几率,提高数据帧传输的安全性,而且方法原理简单,容易实现。

附图说明

下面参照附图结合实施例对本发明作进一步的说明。

图1为现有的数据发送流程图。

图2为本发明方法执行流程图。

具体实施方式

如图2所示,本发明缓存动态分配的方法,包括如下步骤:

步骤1、获取端口的时隙配置表,所述时隙配置表包括每个通道分配的时隙个数;

步骤2、将总缓存除以时隙总数得到平均值,之后将每个通道分配的时隙个数乘以平均值得到每个通道所需分配的缓存值,根据得到的缓存值对每个通道进行分配。

本发明缓存动态分配的系统,包括如下模块:

获取模块,获取端口的时隙配置表,所述时隙配置表包括每个通道分配的时隙个数,以及时隙总数;

分配模块,将总缓存除以时隙总数得到平均值,之后将每个通道分配的时隙个数乘以平均值得到每个通道所需分配的缓存值,根据得到的缓存值对每个通道进行分配。

本发明一种具体实施方式:

以下以32个时隙32个通道配置为例,进行说明;

在实际应用当中,要对通道进行时隙分配就需要有时隙配置表,分配的时隙个数越多代表通道速率越快,假如时隙配置如表1所示:

表1时隙配置表

分配结束后对表1进行时隙扫描,我们可以得到每个通道的时隙个数,如通道0分配3个时隙,通道1分配5个时隙,通道6分配0个时隙,得到各个通道的时隙个数统计如表2所示:

表2通道时隙个数

端口的缓存大小是固定的,如2K字节。如果有32个时隙,则每个时隙可分配64字节缓存,通道的缓存大小=64*时隙个数,如通道1分配的缓存=64*3=192字节,通道6分配的时隙个数为0,分配的缓存为0个字节,根据这个分配规则,各通道缓存分配如表3所示:

表3通道动态缓存分配

通道速率与分配的时隙个数成正比,时隙个数越多,通道速率越快,相应分配的缓存就越多;时隙个数越少,通道速率越慢,相应分配的缓存就越少;时隙个数为0,则该通道分配的缓存为0。在实际应用过程当中,端口缓存大小与时隙个数根据系统实际情况可做调整,具体每个端口可用的时隙个数是灵活可变的,本专利不做限制。

优点说明:

缓存的大小与通道的速率成正比。

避免速率低的通道分配太多缓存造成存储资源浪费;

避免未分配时隙的通道也占用缓存,造成缓存资源的浪费;

避免速率高的通道分配太少缓存,造成因为存储资源不够引起的缓存欠载;

虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1