[发明专利]一种缓存管理方法及装置有效
申请号: | 201210138422.6 | 申请日: | 2012-05-04 |
公开(公告)号: | CN102638412A | 公开(公告)日: | 2012-08-15 |
发明(设计)人: | 王彬 | 申请(专利权)人: | 杭州华三通信技术有限公司 |
主分类号: | H04L12/56 | 分类号: | H04L12/56 |
代理公司: | 北京德琦知识产权代理有限公司 11018 | 代理人: | 牛峥;王丽琴 |
地址: | 310053 浙江省杭州市高新技术产业*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 缓存 管理 方法 装置 | ||
技术领域
本发明涉及数据缓存技术,特别涉及一种缓存管理方法及装置。
背景技术
在逻辑设计中常常需要使用动态随机存储器(DRAM)、静态随机存储器(SRAM)或现场可编程门阵列(FPGA)内部的随机存储器来对数据进行缓存,如何管理缓存空间是逻辑设计中非常重要的一个环节。通常,缓存资源的管理采用先进先出(FIFO)的方式,即依次将报文存入FIFO队列,然后再从FIFO队列中依次取出。
为了满足时延要求,FIFO一般采用尾丢弃机制,即在收到包入队请求后,首先判断FIFO是否有空间能够存储一个最大包,如果有,则将收到的数据包放入缓存;否则直接丢弃该数据包。也就是说,只要FIFO所剩空间不能容纳一个最大包,那么就直接丢弃后续包。在需要入缓存的包较小的情况下,这种做法容易造成本来可以存入缓存的包被错误丢弃,同时也造成了缓存空间的浪费。另外,对于多个通道的报文同时入缓存的情况,为了避免某个通道的报文出现拥塞而导致其他通道的报文也无法读出的情况发生,即为了避免队头堵塞的情况发生,需要为每个通道分别例化FIFO,也就是说,为各个通道分别分配一定的缓存空间。在这种情况下,会出现某个通道的缓存空间被用完了,而其他通道有空闲的缓存空间却不能被拿来使用,这同样会造成缓存空间的浪费。
发明内容
本发明实施例提供了一种缓存管理方法,提高缓存资源利用率,节省缓存管理资源。
一种缓存管理方法,包括:
将缓存空间划分为缓存块,将每个缓存块划分为多个小块,所述缓存块的长度小于最大包长度;
按照小块的长度将数据包分成多个数据块,将分成的数据块根据缓存块对应的写缓存大块地址指针和小块对应的块内地址指针逐个写入空闲的小块中。
本发明实施例还提供了一种缓存管理装置,提高缓存资源利用率,节省缓存管理资源。
一种缓存管理装置,包括:存储模块、切割模块、缓存管理模块以及缓存模块,其中,
存储模块,用于按数据块从入通道读取需要缓存的数据包,每读取一个数据块,根据缓存管理模块对写缓存已用资源的查询情况,以及对大块地址指针的申请判断情况,在收到缓存管理模块返回的写缓存大块地址指针和块内地址指针后,将读取的数据块写入缓存模块中与该写缓存大块地址指针和块内地址指针对应的小块中;并且在写入缓存模块的数据块为包尾时,将该包信息发送给切割模块,其中,所述包信息包括包的首位大地址指针和数据块个数信息;
缓存管理模块,用于在存储模块向缓存模块写入数据块时,确定当前要写入数据块所对应的大块地址指针和块内地址指针;还用于在切割模块向缓存模块读取数据块时,确定当前要读取数据块所对应的大块地址指针和块内地址指针;还用于在收到切割模块发送来的地址释放请求后,根据其中携带的首位大地址指针、数据块个数及自身建立的地址指针链表释放该包所占用的所有大块地址指针;
切割模块,用于根据收到的包信息,根据缓存管理模块对读缓存已用资源的查询情况,以及对地址指针链表的查询判断情况,在收到缓存管理模块返回的读缓存大块地址指针和块内地址指针后,依次从缓存模块中读出该包的所有数据块并发送出去,并向缓存管理模块发送携带该包的首位大地址指针和数据块个数的地址指针释放请求,请求缓存管理模块释放该包所占用的所有大块地址指针;
缓存模块,由长度小于最大包长度的缓存块组成,每个缓存块由多个小块组成。
本发明实施例将整个缓存空间进行两级划分,即整个缓存空间由长度小于最大包长度的缓存块组成,每个缓存块又由多个小块组成,并按照小块的大小将数据包分成若干个数据块进行缓存的方案,能够有效利用缓存空间,提高缓存资源的利用率,避免短包被错误丢弃。另外,根据大块(缓存块)地址指针和块内(小块)地址指针进行报文存取的方式非常便利,各个用户之间的数据不会相互影响,即使在多通道报文同时入缓存的情况下也不会发生队头堵塞的情况,这样,就无需进行FIFO例化,不会出现某个通道的缓存空间被用完了,而其他通道有空闲的缓存空间却不能拿来使用的情况,从而提高了缓存资源的利用率。而且,重要的是,本发明实施例将整个缓存空间进行两级划分的方法,只需要将第一级划分的缓存块所对应的大块地址指针之间建立地址指针链表,而第二级划分的小块所对应的块内地址指针之间不需要建立地址指针链表,直接累加,这样不但节省小块地址指针之间建立链表的管理空间,而且,第一级划分缓存块的粒度可以更大一些,粒度越大,缓存块的数量越少,大块地址指针之间建立链表的管理空间越少,从而大大节省缓存管理资源。
附图说明
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州华三通信技术有限公司,未经杭州华三通信技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210138422.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:汽车天窗的扰流板
- 下一篇:一种汽车减震器安装装置