具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参照图3,为本发明第一实施例的缓存管理方法流程图,所述方法包括:
步骤S301:统计缓存区中空闲缓存块的数量。
步骤S302:当统计的空闲缓存块的数量小于预设阈值时,执行初始化操作,初始化所述缓存区。
本发明实施例一所述方法,统计空闲缓存块的数量,当空闲缓存块的数量小于预设阈值时,系统自动执行初始化操作。采用所述方法,当缓存丢失达到一定程度时,系统能够自动执行初始化操作,恢复原始状态,避免系统因为缓存耗尽而出现死机,大大提高了数据报文缓存系统的可靠性。
优选地,本发明实施例一的方法在步骤S302之后可以进一步包括:
步骤S303:对所述初始化操作的情况进行记录或上报中断至中央处理器(CPU:Central Processing Unit),供系统进行记录和分析。
通过系统对自动执行初始化操作的时间、原因等状况进行统计、分析,以便进一步优化,使系统运行更加稳定、可靠。
本发明实施例二所述方法与实施例一的区别在于进一步包括确定系统发生权重释放错误。当系统缓存丢失达到一定程度且发生权重释放错误时,执行初始化操作,能够进一步提高系统运行的可靠性。
参照图4,为本发明第二实施例的缓存管理方法流程图。
步骤S401:统计空闲缓存块的数量。
可以但不限于采用下述步骤S401a~步骤S401c统计空闲缓存块的数量:
步骤S401a:设置缓存剩余数量计数器。
可以但不限于在缓存管理模块中设置缓存剩余数量计数器buf_left_cnt,实时统计缓存管理模块当前剩余空闲缓存块的数量。
步骤S401b:采用缓存剩余数量计数器,根据缓存块的分配和回收对缓存剩余数量进行计数。
所述计数方式可以包括:系统初始化时,缓存剩余数量计数器buf_left_cnt的值设置为缓存管理模块中缓存块的总数量;每当分配出去一个缓存块时,buf_left_cnt的值减1;每当回收一个缓存块时,buf_left_cnt的值加1。
在本发明其他实施例中,也可以采用其他计数方式,例如,设置缓存使用数量计数器buf_usd_cnt,系统初始化时,缓存使用数量计数器buf_usd_cnt的值设置为0,每当分配出去一个缓存块时,buf_usd_cnt的值加1;每当回收一个缓存块时,buf_usd_cnt的值减1;根据缓存块的总数量减去计数器中的值,即可确定剩余的缓存数量。
步骤S401c:根据计数器的计数值确定空闲缓存块的数量。
步骤S402:确定系统是否发生了权重释放错误。
可以但不限于在缓存管理模块中设置一个权重释放错误标志位wght_err_flag,根据权重释放错误标志位的值确定系统是否发生权重释放错误。
具体可以采用下述方法进行确定:为权重释放错误标志位wght_err_flag定义错误标志和正确标志。系统进行初始化时,将所述权重释放错误标志位wght_err_flag复位为正确标志。当系统出现权重释放错误时,例如申请要释放的缓存块权重值大于权重RAM中对应的权重值时,缓存管理模块自动将wght_err_flag置为错误标志,表示系统发生权重释放错误;否则,权重释放错误标志位wght_err_flag保持为正确标志。
实际应用中,可以但不限于分别用0和1代表错误标志和正确标志。
步骤S403:如果系统发生了权重释放错误,且当前空闲缓存块的数量小于预设阈值时,缓存管理模块进行初始化操作。
当系统出现缓存块释放错误致使缓存无法释放时,buf_left_cnt的值会逐渐减小,直到耗尽。可以预先设定阈值,当buf_left_cnt的值低于预设阈值且确定已经发生权重释放错误时,缓存管理模块进行初始化操作,使权重RAM中的值清零,wght_err_flag复位,buf_left_cnt恢复初始设定值,例如缓存管理模块中缓存块的总数量。缓存管理模块中各个状态恢复初始状态,使系统能够继续正常收发数据包。
所述预设阈值可以根据实际情况具体确定。例如,当系统中缓存块总数量为1K个时,预设阈值为16或32个。
采用所述方法执行缓存自动初始化时,由于芯片的各处理模块中可能还有一些正在处理的缓存块还没有进行释放操作,而在权重RAM清零后才释放,由此可能会产生少量的释放错误,输出少量错误数据包。但是,这些并不影响系统的主要功能,能够有效避免系统频繁死机,大大提高了系统的可靠性。
优选地,本发明实施例二的方法在步骤S403之后可以进一步包括:
步骤S404:对所述初始化操作的情况进行记录或上报中断至CPU,供系统进行记录和分析。
采用步骤S404,系统对自动执行初始化操作的时间、原因等状况进行统计、分析,以便进一步优化,使系统运行更加稳定、可靠。
采用本发明实施例二所述方法,当系统发生权重释放错误且缓存丢失达到一定程度时,系统能够自动执行初始化操作,恢复原始状态。并且,由于在系统释放错误时才进行初始化,使系统在正常情况下即使当前空闲缓存块的数量小于预设阈值也不会初始化,从而所述方法能够解决权重漏释放且发生释放错误的情况,避免系统因为缓存耗尽而出现死机,大大提高了数据报文缓存系统的可靠性。
本发明实施例三所述方法,用于系统中各处理模块正在处理的缓存块数量最大值均小于缓存块总数量的情况。此时,不需要确定系统是否发生权重释放错误,当缓存丢失达到一定程度时,系统自动执行始化操作,恢复正常。
参照图5,为本发明第三实施例的缓存管理方法流程图。
步骤S501:统计空闲缓存块的数量。
步骤S501与步骤S401相同。
步骤S502:当缓存管理模块中剩余空闲缓存块数量小于预设阈值时,缓存管理模块自动执行初始化操作。
所述预设阈值可以但不限于根据缓存块总数量和系统占用缓存块数量的最大值进行确定。
设缓存管理模块中缓存块总数量为buf_num,系统占用缓存块数量的最大值为buf_pro_max,且有系统占用缓存块数量的最大值buf_pro_max小于缓存块总数量buf_num。系统占用缓存块数量的最大值为buf_pro_max即为系统中各处理模块正在处理的缓存块数量的最大值。
所述预设阈值小于或等于缓存块总数量buf_num与系统占用缓存块数量最大值buf_pro_max的差值;所述系统占用缓存块数量最大值buf_pro_max小于所述缓存块总数量buf_num。
通常,系统中各处理模块正在处理的缓存块数量应小于其最大值。因此,在系统正常工作情况下,缓存管理模块中剩余缓存块数量应大于缓存总数量减去正在被处理的缓存块数量。一旦出现剩余缓存块数量小于缓存总数量减去正在被处理的缓存块数量,即buf_left_cnt<buf_num-buf_pro_max。可以认为是发生了缓存泄露。此时缓存管理模块进行初始化操作,使权重RAM中的值清零,wght_err_flag复位,buf_left_cnt恢复初始设定值,例如缓存管理模块中缓存块的总数量。缓存管理模块中各个状态恢复初始状态,使系统能够继续正常收发包。
如果所述阈值小于缓存块总数量buf_num与系统占用缓存块数量最大值buf_pro_max的差值,当缓存管理模块中剩余空闲缓存块数量小于所述预设阈值时,缓存管理模块自动执行初始化操作,由于在系统正常工作情况下,缓存管理模块中剩余缓存块数量应大于缓存总数量减去正在被处理的缓存块数量,故设置阈值小于差值可以减低缓存管理模块进行初始化的频度,提高系统的稳定性。当然,阈值大于缓存块总数量buf_num与系统占用缓存块数量最大值buf_pro_max的差值也是可以的,例如差值为100时,可以设置阈值为100、101、99等均可。
优选地,本发明实施例三的方法还可以在步骤S502之后进一步包括:
步骤S503:对自动执行初始化操作的情况进行记录或上报中断,供系统进行记录和分析。
采用步骤S503,系统对自动执行初始化操作的时间、原因等状况进行统计、分析,对系统进行进一步优化,使系统运行更加稳定、可靠。
采用本发明实施例三所述方法,当出现缓存丢失且缓存丢失到一定数量时,系统能够自动执行初始化操作,恢复原始状态,避免系统因为缓存耗尽而出现死机,大大提高了数据报文缓存系统的可靠性。并且,如果所述阈值小于缓存块总数量buf_num与系统占用缓存块数量最大值buf_pro_max的差值,则可以减低缓存管理模块进行初始化的频度,提高系统的稳定性。
对应于本发明实施例一所述方法,本发明实施例还提供了一种缓存管理装置。
参照图6,为本发明第四实施例的缓存管理装置结构图,所述装置包括:空闲缓存块统计单元601和初始化执行单元602。
空闲缓存块统计单元601,用于缓存区中统计空闲缓存块的数量;
初始化执行单元602,用于当统计的空闲缓存块的数量小于预设阈值时,执行初始化操作,初始化所述缓存区。
进一步,空闲缓存块统计单元601可以包括:计数单元601a、以及统计单元601b。
计数单元601a,用于根据缓存块的分配和回收对缓存剩余数量进行计数;
统计单元601b,用于根据计数单元601a的计数值确定缓存区中空闲缓存块的数量。
进一步,所述装置还可以包括记录单元603,用于记录系统的初始化操作。
进一步,所述装置还可以包括中断上报单元604,用于对系统的初始化操作上报中断至CPU。
采用本发明实施例一所述装置,当系统缓存丢失达到一定程度时,系统能够及时进行初始化操作,恢复原始状态,避免系统因为缓存耗尽而出现死机,大大提高了数据报文缓存系统的可靠性。
对应于本发明实施例二所述方法,本发明实施例还提供了一种缓存管理装置。
参照图7,为本发明第五实施例的缓存管理装置结构图,所述装置包括:空闲缓存块统计单元701、权重释放错误确定单元702、以及初始化执行单元703。
空闲缓存块统计单元701,用于统计空闲缓存块的数量。
权重释放错误确定单元702,用于确定系统是否发生了权重释放错误;如果系统发生了权重释放错误,则通知所述初始化执行单元703。
初始化执行单元703,用于当系统发生了权重释放错误且当前空闲缓存块的数量小于预设阈值时,执行初始化操作。
进一步,空闲缓存块统计单元701可以包括:计数单元701a、以及统计单元701b。
计数单元701a,用于根据缓存块的分配和回收对缓存剩余数量进行计数;
统计单元701b,用于根据计数单元701a的计数值确定缓存区中空闲缓存块的数量。
进一步,当装置中设置了权重释放错误标志位,用于标志系统是否发生权重释放错误时,权重释放错误确定单元702,用于根据权重释放错误标志位的状态确定系统是否发生了权重释放错误;如果系统发生了权重释放错误,则通知所述初始化执行单元。
进一步,所述装置还可以包括记录单元704和中断上报单元705,记录单元704和中断上报单元705的具体实现可以参考本发明第四实施例的相关内容。
采用本发明实施例五所述装置,当系统发生权重释放错误且缓存丢失达到一定程度时,系统能够及时进行初始化操作,恢复原始状态,避免系统因为缓存耗尽而出现死机,大大提高了数据报文缓存系统的可靠性。并且,由于在系统释放错误时才进行初始化,使系统在正常情况下即使前空闲缓存块的数量小于预设阈值也不会初始化,从而降低了系统初始化频率,提高了系统的稳定性。
对应于本发明实施例三所述方法,本发明实施例还提供了一种缓存管理装置。
参照图8,为本发明第六实施例的缓存管理装置结构图;所述装置包括:空闲缓存块统计单元801和初始化执行单元802。
空闲缓存块统计单元801,用于统计空闲缓存块的数量;
初始化执行单元802,用于当所述当前空闲缓存块的数量小于预设阈值时,执行初始化操作。
其中,所述预设阈值小于缓存块总数量与系统占用缓存块数量最大值的差值;所述系统占用缓存块数量最大值小于所述缓存块总数量。
进一步,空闲缓存块统计单元801包括:计数单元以及统计单元。计数单元以及统计单元的具体实现可以参考本发明第五实施例的相关内容
进一步,所述装置还包括记录单元和中断上报单元。记录单元和中断上报单元的具体实现可以参考本发明第四实施例的相关内容。
本发明实施例六所述装置,用于占用缓存块数量最大值小于所述缓存块总数量的系统,当出现缓存丢失且缓存丢失到一定数量时,初始化执行单元能够自动将系统进行初始化操作,恢复系统原始状态,避免系统因为缓存耗尽而出现死机,大大提高了数据报文缓存系统的可靠性。并且,如果所述阈值小于缓存块总数量buf_num与系统占用缓存块数量最大值buf_pro_max的差值,则可以减低缓存管理模块进行初始化的频度,提高系统的稳定性。
本发明实施例所述方法及装置,不仅适用于数据转发芯片的缓存管理方案,对于各种使用到权重缓存管理及同类的方案均使用。
本发明实施例还提供了一种数据转发系统。
参照图9,为本发明第七实施例的数据转发系统示意图。
所述系统包括:数据转发芯片90和芯片外挂数据缓存器95。所述数据转发芯片90包括:输入处理模块91、中间处理模块92、输出处理模块93、缓存管理模块94。
芯片外挂数据缓存器95,用于根据数据转发芯片90的控制,存储或删除数据。
所述缓存管理模块94包括:空闲缓存块统计单元941和初始化执行单元943。
空闲缓存块统计单元941,用于统计数据存储器中空闲缓存块的数量。
初始化执行单元942,用于当数据存储器中的空闲缓存块的数量小于预设阈值时,执行初始化操作。
进一步,所述缓存管理模块94还可以包括:权重释放错误确定单元,用于确定系统是否发生了权重释放错误。如果系统发生了权重释放错误,则通知初始化执行单元942。初始化执行单元942,用于当空闲缓存块的数量小于预设阈值且系统发生了权重释放错误时,执行初始化操作。
进一步,所述预设阈值可以小于或等于缓存块总数量与系统占用缓存块数量最大值的差值;其中,所述系统占用缓存块数量最大值小于所述缓存块总数量。
所述缓存管理模块可以如前述任一种缓存管理装置所述。
采用本发明实施例所述系统,当系统缓存丢失达到一定程度时,系统能够及时进行初始化操作,恢复原始状态,避免系统因为缓存耗尽而出现死机,大大提高了数据报文缓存系统的可靠性。
综上所述,在本发明实施例中,统计缓存区中空闲缓存块的数量,当统计的空闲缓存块的数量小于预设阈值时,系统自动执行初始化操作,初始化缓存区。采用本发明实施例,当系统缓存丢失达到一定程度时,能够自动执行初始化操作,恢复原始状态,避免系统因为缓存耗尽而出现死机,大大提高了数据报文缓存系统的可靠性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,包括如下步骤:统计缓存区中空闲缓存块的数量;当统计的空闲缓存块的数量小于预设阈值时,执行初始化操作,初始化所述缓存区。
以上对本发明所提供的一种缓存管理方法及装置、数据转发系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。