G06F9/50 G06F5/06 G06F9/54
1.一种指针快速申请释放的管理方法,其特征在于,该方法包括:
网络芯片中的两块bitmap_ram,bitmap_ram0和bitmap_ram1,用于存放芯片中的缓存指针的bitmap表,bitmap表表示缓存指针的空闲状态,每块bitmap_ram的位宽为128,深度为64,表示总大小为8K的缓存空间的状态,其中,第i行第j列的bitmap_ram0(i,j)与bitmap_ram1(i,j)表示的是同一个缓存空间(128*i+j)的状态;
当bitmap_ram0(i,j)=0且bitmap_ram1(i,j)=1时,代表缓存空间(128*i+j)空闲;
当bitmap_ram0(i,j)=1且bitmap_ram1(i,j)=0时,代表缓存空间(128*i+j)空闲;
当bitmap_ram0(i,j)=1且bitmap_ram1(i,j)=1时,代表缓存空间(128*i+j)被占用;
bitmap_ram0的64x128个状态位被初始化为0;bitmap_ram1的64x128个状态位被初始化为1;
网络芯片中64bit寄存器row_bmap0的每bit位row_bmap0(i),表示bitmap_ram0的第i行是否存在空闲的缓存空间;当bitmap_ram0的第i行的128bit全为1,row_bmap0(i)的值为0;当128bit中有任意bit为0,row_bmap0(i)的值为1;
64bit寄存器row_bmap1的每bit位row_bmap1(i),表示bitmap_ram1的第i行是否存在空闲的缓存空间;当bitmap_ram1的第i行的128bit全为1,row_bmap1(i)的值为0;当128bit中有任意bit为0,row_bmap1(i)的值为1;
在初始化完成后,内部轮询逻辑在row_bmap0中按从小到大的顺序,选取row_bmap0(i)=1的row,并从bitmap_ram0中读取该row所对应的128个缓存空间的状态写入到fatch_FIFO中,之后将bitmap_ram0中该128个缓存空间的状态位写1;报文在申请空闲的缓存空间时,将fatch_FIFO中该缓存指针所对应的状态位置为1;当fatch_FIFO中每行128个缓存空间全被占用后,fatch_FIFO中缓存的有效row就减少1个,当fatch_FIFO中缓存的有效row数目达到空水线后,内部缓存逻辑继续解析row_bmap0的状态并补充到fatch_FIFO中;
当内部轮询逻辑将row_bmap0的bit0-bit63查询一遍后,内部轮询逻辑会切换到row_bmap1寄存器,查询row_bmap1的bit0-bit63,如此反复;
当内部轮询逻辑在bitmap_ram0中查空闲缓存空间的指针时,此时若有被占用缓存空间的指针要释放,则网络芯片将bitmap_ram1中该指针所对应的bit位写0;当内部轮询逻辑在bitmap_ram1中查空闲缓存空间的指针时,此时若有被占用缓存空间的指针要释放,则将bitmap_ram0中该指针所对应的bit位写0。
2.如权利要求1所述的指针快速申请释放的管理方法,其特征在于,所述网络芯片为网络安全处理芯片。
3.如权利要求1所述的指针快速申请释放的管理方法,其特征在于,当bitmap_ram0(i,j)=0且bitmap_ram1(i,j)=0,是不会出现的非法值。
4.如权利要求1所述的指针快速申请释放的管理方法,其特征在于,在上电撤离后,进行两块bitmap_ram的初始化。
5.如权利要求1所述的指针快速申请释放的管理方法,其特征在于,在两块bitmap_ram初始化完成后,64bit的寄存器row_bmap0的值为全1,row_bmap1的值为全0。
6.如权利要求1所述的指针快速申请释放的管理方法,其特征在于,fatch_FIFO的深度是N,宽度是128bit,故会读取N个不同row所对应的N*128个缓存空间的状态写入到fatch_FIFO。
7.如权利要求6所述的指针快速申请释放的管理方法,其特征在于,fatch_FIFO是每拍读写的FIFO,故能够保证报文在申请空闲的缓存空间时,当拍即可获取空闲缓存指针,并将fatch_FIFO中该缓存指针所对应的状态位置为1。
8.如权利要求6所述的指针快速申请释放的管理方法,其特征在于,当fatch_FIFO中缓存的有效row数目达到空水线M后,内部缓存逻辑继续解析row_bmap0的状态,并从bitmap_ram0中读取N-M个row的所对应的(N-M)*128个缓存空间的状态并写入到fatch_FIFO中。
9.如权利要求8所述的指针快速申请释放的管理方法,其特征在于,N=10,M=5。
10.如权利要求1所述的指针快速申请释放的管理方法,其特征在于,网络芯片在bitmap_ram0或bitmap_ram1中进行指针释放时,若发现释放指针所对应的bit为0,此种情况为指针重复释放,内部逻辑会上报告警。
本发明属于硬件设计领域,涉及一种指针快速申请释放的管理方法,具体涉及一种网络安全处理芯片中,缓存指针的申请与释放的管理办法。
内存指针申请释放,一般是软件设计中的概念,在硬件设计尤其是芯片设计中很少涉及。在大部分芯片设计中,采用读写指针的方式,将接收到的报文写入缓存或读出缓存,此种方式下缓存的空闲状态与读写指针有关,缓存空闲状态是确定的。而在某些芯片设计中,或由于多缓存处理架构下的负载均衡问题,或由于报文输入输出不遵循先进先出的规则等,在此种场景下,输入报文在缓存中不是连续存放的,此时会导致缓存的空闲状态是不可预期的,此时就需要管理缓存指针的申请释放。
在软件设计中,指针申请释放主要关注内存泄漏(指针申请而不释放)、内存重复释放(有效指针被释放两次及以上)。
在硬件设计中,指针申请释放除关注以上两个问题外,还需要关注指针的申请释放效率,能否在数据接收及发送的当拍完成指针的申请释放,是芯片设计中指针管理的一大难点。
(一)要解决的技术问题
本发明要解决的技术问题是如何提供一种指针快速申请释放的管理方法,以解决在硬件设计中指针申请释放的问题。
(二)技术方案
为了解决上述技术问题,本发明提出一种指针快速申请释放的管理方法,该方法包括:
网络芯片中的两块bitmap_ram,bitmap_ram0和bitmap_ram1,用于存放芯片中的缓存指针的bitmap表,bitmap表表示缓存指针的空闲状态,每块bitmap_ram的位宽为128,深度为64,表示总大小为8K的缓存空间的状态,其中,第i行第j列的bitmap_ram0(i,j)与bitmap_ram1(i,j)表示的是同一个缓存空间(128*i+j)的状态;
当bitmap_ram0(i,j)=0且bitmap_ram1(i,j)=1时,代表缓存空间(128*i+j)空闲;
当bitmap_ram0(i,j)=1且bitmap_ram1(i,j)=0时,代表缓存空间(128*i+j)空闲;
当bitmap_ram0(i,j)=1且bitmap_ram1(i,j)=1时,代表缓存空间(128*i+j)被占用;
bitmap_ram0的64x128个状态位被初始化为0;bitmap_ram1的64x128个状态位被初始化为1;
网络芯片中64bit寄存器row_bmap0的每bit位row_bmap0(i),表示bitmap_ram0的第i行是否存在空闲的缓存空间;当bitmap_ram0的第i行的128bit全为1,row_bmap0(i)的值为0;当128bit中有任意bit为0,row_bmap0(i)的值为1;
64bit寄存器row_bmap1的每bit位row_bmap1(i),表示bitmap_ram1的第i行是否存在空闲的缓存空间;当bitmap_ram1的第i行的128bit全为1,row_bmap1(i)的值为0;当128bit中有任意bit为0,row_bmap1(i)的值为1;
在初始化完成后,内部轮询逻辑在row_bmap0中按从小到大的顺序,选取row_bmap0(i)=1的row,并从bitmap_ram0中读取该row所对应的128个缓存空间的状态写入到fatch_FIFO中,之后将bitmap_ram0中该128个缓存空间的状态位写1;报文在申请空闲的缓存空间时,将fatch_FIFO中该缓存指针所对应的状态位置为1;当fatch_FIFO中每行128个缓存空间全被占用后,fatch_FIFO中缓存的有效row就减少1个,当fatch_FIFO中缓存的有效row数目达到空水线后,内部缓存逻辑继续解析row_bmap0的状态并补充到fatch_FIFO中;
当内部轮询逻辑将row_bmap0的bit0-bit63查询一遍后,内部轮询逻辑会切换到row_bmap1寄存器,查询row_bmap1的bit0-bit63,如此反复;
当内部轮询逻辑在bitmap_ram0中查空闲缓存空间的指针时,此时若有被占用缓存空间的指针要释放,则网络芯片将bitmap_ram1中该指针所对应的bit位写0;当内部轮询逻辑在bitmap_ram1中查空闲缓存空间的指针时,此时若有被占用缓存空间的指针要释放,则将bitmap_ram0中该指针所对应的bit位写0。
进一步地,所述网络芯片为网络安全处理芯片。
进一步地,当bitmap_ram0(i,j)=0且bitmap_ram1(i,j)=0,是不会出现的非法值。
进一步地,在上电撤离后,进行两块bitmap_ram的初始化。
进一步地,在两块bitmap_ram初始化完成后,64bit的寄存器row_bmap0的值为全1,row_bmap1的值为全0。
进一步地,fatch_FIFO的深度是N,宽度是128bit,故会读取N个不同row所对应的N*128个缓存空间的状态写入到fatch_FIFO。
进一步地,fatch_FIFO是每拍读写的FIFO,故能够保证报文在申请空闲的缓存空间时,当拍即可获取空闲缓存指针,并将fatch_FIFO中该缓存指针所对应的状态位置为1。
进一步地,当fatch_FIFO中缓存的有效row数目达到空水线M后,内部缓存逻辑继续解析row_bmap0的状态,并从bitmap_ram0中读取N-M个row的所对应的(N-M)*128个缓存空间的状态并写入到fatch_FIFO中。
进一步地,N=10,M=5。
进一步地,网络芯片在bitmap_ram0或bitmap_ram1中进行指针释放时,若发现释放指针所对应的bit为0,此种情况为指针重复释放,内部逻辑会上报告警。
(三)有益效果
本发明提出一种指针快速申请释放的管理方法,本发明提供一种缓存指针(即每个缓存空间的地址)的申请与释放的管理方法,通过维护缓存指针的bitmap表,可做到连续N拍(N为任意值)申请N个指针、或释放N个指针、或申请N个指针并释放N个指针。本发明中的缓存指针的申请释放方法,使得芯片在数据接收及发送的当拍即可完成缓存指针的申请释放。
图1为本发明指针快速申请释放的管理方法示意图。
为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
本发明涉及一种网络安全处理芯片中,缓存指针的申请释放的管理方法。本发明中的缓存指针的申请释放方法,使得芯片在数据接收及发送的当拍即可完成缓存指针的申请释放。缓存指针的快速申请与释放,是满足各种带宽业务处理要求及性能的基础。
网络安全处理芯片(以下简称:网络芯片)在工作时,会收到网络上各种长度(64B-15.5K)的报文。这些报文每128B(不足128B按128B处理)占用一个缓存空间,存储到总大小为8K、总容量为1MB(128B*8K)的缓存空间。
网络芯片在收到各种带宽业务的报文时,需要为报文的每128B数据,快速的申请到一个空闲缓存。各种带宽业务的报文在输出时,输出128B数据,均需要快速将该数据对应的缓存空间进行释放。
图1是本发明技术方案的设计框图。如图1所示,网络芯片中的两块bitmap_ram(bitmap_ram0/bitmap_ram1),用于存放芯片中的缓存指针的bitmap表,bitmap表表示缓存指针的空闲状态。每块bitmap_ram的位宽为128,深度为64,表示总大小为8K(128x64)的缓存空间的状态。其中,第i行第j列的bitmap_ram0(i,j)与bitmap_ram1(i,j)表示的是同一个缓存空间(128*i+j)的状态。取值有如下几种情况:
(1)当bitmap_ram0(i,j)=0且bitmap_ram1(i,j)=0,是不会出现的非法值;
(2)当bitmap_ram0(i,j)=0且bitmap_ram1(i,j)=1时,代表缓存空间(128*i+j)空闲;
(3)当bitmap_ram0(i,j)=1且bitmap_ram1(i,j)=0时,代表缓存空间(128*i+j)空闲;
(4)当bitmap_ram0(i,j)=1且bitmap_ram1(i,j)=1时,代表缓存空间(128*i+j)被占用;
在上电撤离后,进行两块bitmap_ram的初始化。bitmap_ram0的64x128个状态位,被初始化为0。bitmap_ram1的64x128个状态位,被初始化为1。因bitmap_ram0(i,j)=0且bitmap_ram1(i,j)=1,故此时8K的缓存空间的状态都是空闲的。
在图1中,网络芯片中64bit寄存器row_bmap0的每bit位row_bmap0(i),表示bitmap_ram0的第i行是否存在空闲的缓存空间。当bitmap_ram0的第i行的128bit全为1,row_bmap0(i)的值为0;当128bit中有任意bit为0,row_bmap0(i)的值为1。同理,64bit寄存器row_bmap1的每bit位row_bmap1(i),表示bitmap_ram1的第i行是否存在空闲的缓存空间。row_bmap1与bitmap_ram1的对应关系,与row_bmap0与bitmap_ram0的对应关系,一致,即当bitmap_ram1的第i行的128bit全为1,row_bmap1(i)的值为0;当128bit中有任意bit为0,row_bmap1(i)的值为1。
在两块bitmap_ram初始化完成后,64bit的寄存器row_bmap0的值为全1,row_bmap1的值为全0。
在初始化完成后,内部轮询逻辑在row_bmap0中按从小到大的顺序,选取row_bmap0(i)=1的row,并从bitmap_ram0中读取该row所对应的128个缓存空间的状态写入到fatch_FIFO中,之后将bitmap_ram0中该128个缓存空间的状态位写1。fatch_FIFO的深度是N,宽度是128bit,故会读取N个不同row所对应的N*128个缓存空间的状态写入到fatch_FIFO。某个实施例中,N=10。
因fatch_FIFO是每拍读写的FIFO,故能够保证报文在申请空闲的缓存空间时,当拍即可获取空闲缓存指针,并将fatch_FIFO中该缓存指针所对应的状态位置为1。当fatch_FIFO中每行128个缓存空间全被占用后(128bit状态位全为1),fatch_FIFO中缓存的有效row就减少1个。当fatch_FIFO中缓存的有效row数目达到空水线M后,内部缓存逻辑继续解析row_bmap0的状态,并从bitmap_ram0中读取N-M个row的所对应的(N-M)*128个缓存空间的状态并写入到fatch_FIFO中。N>M。其中,M为5。
当内部轮询逻辑将row_bmap0的bit0-bit63查询一遍后,内部轮询逻辑会切换到row_bmap1寄存器,查询row_bmap1的bit0-bit63,如此反复。
当内部轮询逻辑在bitmap_ram0中查空闲缓存空间的指针时,此时若有被占用缓存空间的指针要释放,则网络芯片将bitmap_ram1中该指针所对应的bit位写0。反之,当内部轮询逻辑在bitmap_ram1中查空闲缓存空间的指针时,此时若有被占用缓存空间的指针要释放,则将bitmap_ram0中该指针所对应的bit位写0。此种机制,能够保证指针的申请与释放同时进行。其中,bitmap_ram0、bitmap_ram1中,都是0代表空闲,1代表占用。
网络芯片在bitmap_ram0或bitmap_ram1中进行指针释放时,若发现释放指针所对应的bit为0,此种情况为指针重复释放,内部逻辑会上报告警。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
本文发布于:2023-04-13 01:39:55,感谢您对本站的认可!
本文链接:https://patent.en369.cn/patent/4/85587.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |