缓存地址释放方法、系统及逻辑模块的制作方法

文档序号:7665263阅读:192来源:国知局
专利名称:缓存地址释放方法、系统及逻辑模块的制作方法
技术领域
本发明涉及数据緩存技术,尤其涉及一种緩存地址释放方法、系统及逻 辑模块。
背景技术
在数据通信技术中,逻辑模块(如CPU_RX模块)从外部收到报文后, 首先会申请緩存地址对报文进行緩存,如果该报文是普通数据报文,则通过 数据通道将该报文发送出去;如果该报文是协议报文,则通过控制通道将该 报文上送CPU。无论是数据报文还是协议报文,在该报文发送完毕后,均需 要释放之前为该报文申请到的緩存地址。本文主要针对协议报文的地址释放 操作进行阐述。
图1示出了现有技术中逻辑模块的结构示意图,下面结合图l对现有技 术中的协议报文地址申请和释放过程进行详细说明。如图l所示,逻辑模块 包括报文接收模块、先入先出(FIFO)队列、随机存储器(RAM)、地 址管理模块、收包查询模块、读包信息模块、读包数据模块和地址释放模块。 报文接收模块从外部接收到协议报文后,向管理緩存地址的地址管理模块申 请緩存地址,将接收到的报文存入申请到的緩存地址所对应的RAM空间中, 并在一个完整的报文接收完毕后,将该报文的长度、缓存地址等包信息写入 FIFO队列,同时将当前包数目加l,并告知收包查询模块当前有报文上送。 CPU通过收包查询模块查询当前有无报文上送,如果有,则通过读包信息模 块从FIFO队列中读出一个包信息,然后,根据读出的包信息通过读包数据 模块从RAM中读出相应的报文,并且,在一个完整的报文从RAM中被读 出之后,CPU控制地址释放模块发起地址释放操作,将之前读出的包信息中200710177721.X
说明书第2/6页
所包含的緩存地址释放给地址管理模块。其中,读包信息模块从FIFO队列 中读出 一个包信息后会通知报文接收模块,报文接收模块收到通知后将当前 包数目减1,当所有报文都被CPU读出后,报文接收模块告知收包查询模块 当前包数目为空。
由以上描述可见,现有的地址释放操作是由CPU控制的。在这种情况 下,如果CPU与逻辑模块之间的接口出现异常(比如外界瞬时的不可预知 的干扰如雷击,或因网络瞬间CPU链路流量过大而导致信息丢失等)或者 CPU释放错误,则会造成逻辑模块中緩存地址的泄漏或错误释放,并最终导 致CPU通道不通或出现错包。比如,假设FIFO队列中存储的包信息Bl包 含的緩存地址为B,如果CPU在应该释放緩存地址A时错误地释放了数据 还未被读出的緩存地址B,而报文接收模块之后又向错误释放的缓存地址B 中重新写入了新的数据,那么,当CPU下次根据FIFO队列中的包信息B1 从緩存地址B中读数据时,被读出的将是报文接收模块后来重新写入的数 据,而并非原始的对应包信息B1的数据,这样就出现了错包的现象。另夕卜, 当CPU和逻辑模块间的接口出现异常时,很可能会导致CPU发出的地址释 放命令丢失,从而使得应该被释放的緩存地址得不到释放,长此以往,就会 造成可用的緩存地址逐渐减少,当没有緩存地址可用时,就会导致CPU通 道不通。

发明内容
有鉴于此,本发明的主要目的在于提供一种緩存地址释放方法、 一种緩 存地址释放系统以及一种逻辑模块,以保证緩存地址能够得到正确释放,防 止緩存地址释放错误的情况发生。
为达到上述目的,本发明提供的技术方案如下
一种緩存地址释放方法,该方法包括
逻辑模块中有报文上送CPU时,CPU先向逻辑模块查询包信息,根据 查询到的包信息从逻辑模块中读取报文,并在该报文读取完毕后,从逻辑模块中读出该报文对应的包信息;逻辑模块在所述包信息被读出时,释放该包信息中包含的緩存地址。所述逻辑模块包括包信息查询读取模块和用于存储包信息的先入先出队列,所述CPU向逻辑模块查询包信息的过程包括CPU向逻辑模块中的 包信息查询读取模块发送查询包信息请求,包信息查询读取模块收到该请求 后,查询先入先出队列中的第一个包信息,并将查询到的包信息上报给CPU。所述逻辑模块包括读包数据模块和用于存储报文的随机存储器,所述 CPU读取报文的过程包括CPU根据查询到的包信息向读包数据模块发出 读数据命令,读包数据模块收到读数据命令后,从随机存储器中读出与所述 包信息对应的报文,并将读出的报文发送给CPU。所述从逻辑模块中读出包信息的过程包括CPU向逻辑模块中的包信 息查询读取模块发送读包信息命令,包信息查询读取模块收到读包信息命令 后,从先入先出队列中读出一个包信息。所述逻辑模块还包括地址管理模块,所述释放緩存地址的过程包括包 信息查询读取模块从先入先出队列中读出一个包信息后,向地址管理模块发 出地址释放请求,将读出的包信息中包含的緩存地址释放出来。所述逻辑模块还包括报文接收模块,所述包信息查询模块从先入先出队 列中读出 一个包信息后进一步包括包信息查询读取模块向报文接收模块发 送包信息读出通知,报文接收模块收到通知后将当前包数目减一。一种逻辑模块,与CPU相连,包括报文接收模块、先入先出队列、随 机存储器、地址管理模块、收包查询模块和读包数据模块,该逻辑模块还包 括包信息查询读取模块,用于在收到CPU下发的查询包信息请求后,查 询先入先出队列中的第一个包信息,将查询到的包信息上报给CPU,在收到 CPU下发的读包信息命令后,从先入先出队列中读出一个包信息,并向地址 管理模块发出地址释放请求,将该包信息中包含的緩存地址释放出来。所述包信息查询读取模块还用于在从先入先出队列中读出 一个包信息之后,向报文接收模块发送包信息读出通知,报文接收模块收到通知后将当 前包数目减一。一种緩存地址释放系统,包括CPU和逻辑模块,该逻辑模块包括报文 接收模块、先入先出队列、随机存储器、地址管理模块、收包查询模块和读 包数据模块,所述逻辑模块还包括包信息查询读取模块,其中,所述CPU,用于在通过收包查询模块查询到有报文上送时,向包信息查询读取模块发出查询包信息请求,在收到包信息查询读取模块返回的包信 息后,通过读包数据模块从随机存储器中读出与查询到的包信息对应的数据报文,并在该报文读取完毕后,向包信息查询读取模块发送读包信息命令; 包信息查询读取模块,用于在收到CPU下发的查询包信息请求后,查 询先入先出队列中的第一个包信息,将查询到的包信息上报给CPU,在收到 CPU下发的读包信息命令后,从先入先出队列中读出一个包信息,并向地址 管理模块发出地址释放请求,将该包信息中包含的缓存地址释放出来。所述包信息查询读取模块还用于在从先入先出队列中读出一个包信息 之后,向报文接收模块发送包信息读出通知,报文接收模块收到通知后将当 前包数目减一。由此可见,在本发明所提供的技术方案中,緩存地址释放:缲作是由逻辑 模块在包信息被读出的同时完成的,而不是由CPU发起的。本发明中的緩 存地址释放操作不受CPU控制,也没有经过CPU与逻辑模块间的接口 ,从 而有效避免了因CPU与逻辑模块间的接口异常或CPU释放错误而造成緩存 地址释放错误的情况发生,保证了緩存地址的正确释放,不会因緩存地址释 放错误而出现CPU通道不通或错包现象。


图1为现有技术中的逻辑模块结构示意图;图2为本发明实施例中的逻辑模块结构示意图;图3为本发明实施例中的緩存地址释放方法流程图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,下面参照附图并举 实施例,对本发明作进一步详细i兌明。本发明的基本思想是去掉逻辑模块内部专用的地址释放模块,不由 CPU控制地址释放模块进行緩存地址释放,而是利用逻辑模块自身进行緩存 地址释放,以防止由于CPU与逻辑模块间的接口异常或CPU释放错误而造 成緩存地址的错误释放。图2示出了本发明实施例中的逻辑模块结构示意图。在图2所示结构中, 报文接收模块、FIFO队列、RAM、地址管理模块、收包查询模块及读包数 据模块的功能均与图1中相应模块的功能一致,这里不再——赘述。与图1 不同的是,图2所示的逻辑模块中去掉了地址释放模块,并且,将原有的读 包信息模块变成了包信息查询读取模块。在图2所示逻辑模块结构中,报文接收单元收到协议报文后进行緩存的 过程与现有技术一致,这里不再赘述。下面主要针对CPU从逻辑模块中读 取报文及緩存地址的释放过程进行详细阐述,如图3所示,该过程主要包括 以下步骤步骤301: CPU通过收包查询模块查询当前有无报文上送,如果有,则 向包信息查询读取^^莫块发出查询包信息请求。步骤302:包信息查询读取模块收到CPU的查询包信息请求后,查询 FIFO队列中的第一个包信息,并将查询到的包信息上报给CPU。需要注意的是,在步骤301中,CPU向包信息查询读取模块发出的是 查询包信息请求,而不是读包信息命令;并且,在步骤302中,包信息查询 读取模块并没有从FIFO队列中读出包信息,而只是查询了 FIFO队列中的 包信息。也就是说,在步骤302执行完毕后,FIFO队列中的包信息没有发 生任何改变。步骤303: CPU收到包信息查询读取模块上报的包信息后,根据收到的
包信息向读包数据模块发送读数据命令,读包数据模块收到读数据命令后,从RAM中读出与所述包信息相对应的报文,并将读出的包信息上报给CPU。 步骤304: —个完整报文读取完毕后,CPU向包信息查询读取模块发送 读包信息命令。步骤305:包信息查询读取模块收到CPU发出的读包信息命令后,从 FIFO队列中读出一个包信息,并且,向地址管理模块发起地址释放请求, 将该包信息中包含的缓存地址释放出来。另外,包信息查询读取模块从FIFO队列中读出一个包信息后,还会通 知报文接收模块,报文接收模块收到通知后将当前包数目减1,当所有报文 都被CPU读出后,报文接收模块告知收包查询模块当前包数目为空。需要说明的是,在图3所示流程中,之所以选择先查询包信息,在报文 读取完毕后再从FIFO中读出包信息并进行地址释放,是因为如果CPU — 开始就直接通过包信息查询读取模块从FIFO中读出包信息,且包信息查询 读取模块在包信息读出后就进行地址释放,那么,就很可能造成在CPU还 未来得及将与该包信息对应的报文读出时,该报文所占用的地址就已经被过 早释放掉了,从而造成丢包现象。由以上描述可见,在本发明提供的技术方案中,緩存地址的释放是由逻 辑模块内部的包信息查询读取模块完成的,该释放操作不受CPU控制,也 没有经过CPU与逻辑模块间的接口,从而有效避免了因CPU与逻辑模块间 的接口异常或CPU释放错误而造成緩存地址释放错误的情况发生,保证了 緩存地址的正确释放,不会因緩存地址释放错误而出现CPU通道不通或错 包现象。以上所述对本发明的目的、技术方案和有益效果进行了进一步的详细说 明,所应理解的是,以上所述并不用以限制本发明,凡在本发明的精神和原 则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范 围之内。
权利要求
1、一种缓存地址释放方法,其特征在于,该方法包括逻辑模块中有报文上送CPU时,CPU先向逻辑模块查询包信息,根据查询到的包信息从逻辑模块中读取报文,并在该报文读取完毕后,从逻辑模块中读出该报文对应的包信息;逻辑模块在所述包信息被读出时,释放该包信息中包含的缓存地址。
2、 根据权利要求1所述的方法,其特征在于,所述逻辑模块包括包信息查 询读取模块和用于存储包信息的先入先出队列,所述CPU向逻辑模块查询包信 息的过程包括CPU向逻辑模块中的包信息查询读取模块发送查询包信息请求,包信息查 询读取;f莫块收到该请求后,查询先入先出队列中的第一个包信息,并将查询到的包信息上报给CPU。
3、 根据权利要求1所述的方法,其特征在于,所述逻辑模块包括读包数据 模块和用于存储报文的随机存储器,所述CPU读取报文的过程包括CPU根据查询到的包信息向读包数据模块发出读数据命令,读包数据模块 收到读数据命令后,从随机存储器中读出与所述包信息对应的报文,并将读出 的报文发送给CPU。
4、 根据权利要求2所述的方法,其特征在于,所述从逻辑模块中读出包信 息的过程包括CPU向逻辑模块中的包信息查询读取模块发送读包信息命令,包信息查询 读取模块收到读包信息命令后,从先入先出队列中读出一个包信息。
5、 根据权利要求4所述的方法,其特征在于,所述逻辑模块还包括地址管 理模块,所述释放緩存地址的过程包括包信息查询读取模块从先入先出队列中读出 一个包信息后,向地址管理模 块发出地址释放请求,将读出的包信息中包含的緩存地址释放出来。
6、 根据权利要求5所述的方法,其特征在于,所述逻辑模块还包括报文接 收模块,所述包信息查询模块从先入先出队列中读出 一个包信息后进一步包括包信息查询读取模块向报文接收模块发送包信息读出通知,报文接收模块 收到通知后将当前包数目减一。
7、 一种逻辑模块,与CPU相连,包括报文接收模块、先入先出队列、随 机存储器、地址管理模块、收包查询模块和读包数据模块,其特征在于,该逻 辑模块还包括包信息查询读取4莫块,用于在收到CPU下发的查询包信息请求后,查询先 入先出队列中的第一个包信息,将查询到的包信息上报给CPU,在收到CPU 下发的读包信息命令后,从先入先出队列中读出一个包信息,并向地址管理模 块发出地址释放请求,将该包信息中包含的緩存地址释放出来。
8、 根据权利要求7所述的逻辑模块,其特征在于,所述包信息查询读取模 块还用于在从先入先出队列中读出 一个包信息之后,向报文接收模块发送包信 息读出通知,报文接收模块收到通知后将当前包数目减一。
9、 一种緩存地址释放系统,包括CPU和逻辑模块,该逻辑模块包括报文 接收模块、先入先出队列、随机存储器、地址管理模块、收包查询模块和读包 数据模块,其特征在于,所述逻辑模块还包括包信息查询读取;漠块,其中,所述CPU,用于在通过收包查询模块查询到有报文上送时,向包信息查询 读取模块发出查询包信息请求,在收到包信息查询读取模块返回的包信息后, 通过读包数据模块从随机存储器中读出与查询到的包信息对应的数据报文,并 在该报文读取完毕后,向包信息查询读取模块发送读包信息命令;包信息查询读取^莫块,用于在收到CPU下发的查询包信息请求后,查询先 入先出队列中的第一个包信息,将查询到的包信息上报给CPU,在收到CPU 下发的读包信息命令后,从先入先出队列中读出一个包信息,并向地址管理模 块发出地址释放请求,将该包信息中包含的緩存地址释放出来。
10、 根据权利要求9所述的系统,其特征在于,所述包信息查询读取模块 还用于在从先入先出队列中读出 一个包信息之后,向报文接收模块发送包信息 读出通知,报文接收模块收到通知后将当前包数目减一。
全文摘要
本发明提供了一种缓存地址释放方法,该方法包括逻辑模块中有报文上送CPU时,CPU先向逻辑模块查询包信息,根据查询到的包信息从逻辑模块中读取报文,并在该报文读取完毕后,从逻辑模块中读出该报文对应的包信息;逻辑模块在所述包信息被读出时,释放该包信息中包含的缓存地址。另外,本发明还提供了一种逻辑模块以及一种缓存地址释放系统。本发明能够保证缓存地址得到正确释放,防止缓存地址释放错误的情况发生。
文档编号H04L12/56GK101150525SQ20071017772
公开日2008年3月26日 申请日期2007年11月20日 优先权日2007年11月20日
发明者彬 王 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1