基于FPGA的指针回收方法及装置制造方法及图纸

技术编号:20926062 阅读:15 留言:0更新日期:2019-04-20 11:48
本发明专利技术公开了一种基于FPGA的指针回收方法及装置,该方法包括:获取待提取报文缓存指针后,更新所述待提取报文缓存指针对应的第一缓存地址的待访问次数;以及,获取已提取报文缓存指针后,更新所述已提取报文缓存指针对应的第二缓存地址的已访问次数;确定所述第二缓存地址的待访问次数与已访问次数是否相同;若确定所述第二缓存地址的待访问次数与已访问次数相同,则回收所述第二缓存地址对应的指针。该方案可以实现及时更新缓存资源,避免了缓存资源的浪费。

Method and Device of Finger Recovery Based on FPGA

The invention discloses a pointer recovery method and device based on FPGA, which includes: updating the number of visits to the first cache address corresponding to the extracted message cache pointer after obtaining the extracted message cache pointer; and updating the number of visits to the second cache address corresponding to the extracted message cache pointer after obtaining the extracted message cache pointer; Whether the number of visits to the second cache address is the same as the number of visits already made, and if it is determined that the number of visits to the second cache address is the same as the number of visits already made, the pointer corresponding to the second cache address is recovered. This scheme can update the cache resources in time and avoid wasting the cache resources.

【技术实现步骤摘要】
基于FPGA的指针回收方法及装置
本专利技术涉及通信
,尤指一种基于现场可编程门阵列(Field-ProgrammableGateArray,FPGA)的指针回收方法及装置。
技术介绍
交换机和路由器等网络设备对报文进行转发可以分为单播报文转发和多播报文的转发,下面分别介绍这两种情况。第一种针对单播报文的转发,如图1所示,报文packet0从端口port0进入,在入口处将报文存储在缓存内,会生成携带报文缓存指针的钥匙(KEY),同时解析报文头部提取查表信息,根据查表信息和KEY中携带的报文缓存指针进入查表引擎获取到查表结果后,根据KEY中携带的报文缓存指针从缓存内提取报文,并转发至相应出口,也就是端口3。第二种针对多播报文的转发,多播报文可以是组播报文和广播报文,如图2所示,报文packet1从端口0进入,在入口处将报文存储在缓存内,会生成携带报文缓存指针的钥匙(KEY),同时解析报文头部提取查表信息,根据查表信息和KEY中携带的报文存储指针进入查表引擎获取到查表结果后,假设获得的查表结果是需要将该packet1转发至端口1、2、3,这就需要将KEY复制三份存储至缓存,然后再根据KEY携带的报文缓存指针依次从缓存内提取报文,并转发至相应出口,也就是至端口1、2、3。如图3所示为上述过程中提到的缓存的结构示意图,主要由指针管理模块和缓存区构成,指针管理模块包括指针分配模块和指针回收模块。其中,指针分配模块存储着缓存区内可用的每个缓存单元的地址,当某个报文进入网络设备后,需要先向指针分配模块申请指针,然后将报文存储至申请到的指针对应的缓存单元内。指针回收模块负责管理回收可释放的缓存单元的指针,当某个报文的相关信息经过查表获取出口之后,就根据之前分配的指针到缓存区提取报文,同时将缓存单元的指针交还给指针回收模块,然后将报文转发到相应出口;若该报文为单播报文,则提取缓存的报文后,就可以回收对应的指针;若该报文为组播报文,则提取缓存的所有报文后,就可以回收对应的指针;当报文全部提取完毕后(单播提取一次,多播提取多次),对应指针就需要全部回收。以便缓存单元继续循环利用。目前,缓存中的指针回收方法是,根据报文在网络设备内停留的最长时间计算,得到单个缓存地址在网络设备内部停留的最长时间t,通过t对每个缓存地址进行定时,当某个缓存地址被使用超过t,则将该缓存地址回收,也就是回收该缓存地址对应的指针。该方法,无论缓存地址是否被使用,只要t到期,就会收回该缓存地址对应的指针,即使该缓存地址没有被使用,也要等到t到期后,该缓存地址对应的指针才会被收回,那可能该缓存地址有很长一段时间处于空闲状态,因此,该方法无法对缓存资源进行及时更新,极大的浪费了缓存资源。
技术实现思路
本专利技术实施例提供一种基于FPGA的指针回收方法及装置,用以解决现有技术中存在的无法对缓存资源进行及时更新,极大的浪费了缓存资源的问题。根据本专利技术实施例,提供一种基于FPGA的指针回收方法,所述FPGA作为网络设备的缓存,所述方法包括:获取待提取报文缓存指针后,更新所述待提取报文缓存指针对应的第一缓存地址的待访问次数;以及,获取已提取报文缓存指针后,更新所述已提取报文缓存指针对应的第二缓存地址的已访问次数;确定所述第二缓存地址的待访问次数与已访问次数是否相同;若确定所述第二缓存地址的待访问次数与已访问次数相同,则回收所述第二缓存地址对应的指针。具体的,更新所述待提取报文缓存指针对应的第一缓存地址的待访问次数,具体包括:从所述缓存包括的第一存储器中读取所述待提取报文缓存指针对应的第一缓存地址的第一数据,所述第一存储器与所述缓存的缓存地址相同;将所述第一数据增加第一设定数值后,得到所述待访问次数;将所述待访问次数写入所述第一存储器中的所述第一缓存地址中和所述缓存包括的第二存储器中的所述第一缓存地址中,所述第二存储器与所述缓存的缓存地址相同。具体的,将所述第一数据增加第一设定数值后,得到所述待访问次数,具体包括:确定在设定时长之前是否执行过所述从所述缓存包括的第一存储器中读取所述待提取报文缓存指针对应的第一缓存地址的第一数据的步骤;若确定在所述设定时长之前执行过所述从所述缓存包括的第一存储器中读取所述待提取报文缓存指针对应的第一缓存地址的第一数据的步骤,则将所述第一数据增加2;若确定在所述设定时长之前未执行过所述从所述缓存包括的第一存储器中读取所述待提取报文缓存指针对应的第一缓存地址的第一数据的步骤,则将所述第一数据增加1。具体的,更新所述已提取报文缓存指针对应的第二缓存地址的已访问次数,具体包括:从所述缓存包括的第三存储器中读取所述已提取报文缓存指针对应的第二缓存地址的第二数据,所述第三存储器与所述缓存的缓存地址相同;将所述第二数据增加第二设定数值后,得到所述已访问次数;将所述已访问次数写入所述第三存储器的所述第二缓存地址中。具体的,将所述第二数据增加第二设定数值后,得到所述已访问次数,具体包括:确定在设定时长之前是否执行过所述从所述缓存包括的第三存储器中读取所述已提取报文缓存指针对应的第二缓存地址的第二数据的步骤;若确定在所述设定时长之前执行过所述从所述缓存包括的第三存储器中读取所述已提取报文缓存指针对应的第二缓存地址的第二数据的步骤,则将所述第二数据增加2;若确定在所述设定时长之前未执行过所述从所述缓存包括的第三存储器中读取所述已提取报文缓存指针对应的第二缓存地址的第二数据的步骤,则将所述第二数据增加1。具体的,确定所述第二缓存地址的待访问次数与已访问次数是否相同,具体包括:读取所述第二存储器的所述第二缓存地址的第三数据;确定所述第三数据与所述已访问次数是否相同;若确定所述第三数据与所述已访问次数相同,则确定所述第二缓存地址的待访问次数与已访问次数相同;若确定所述第三数据与所述已访问次数不同,则确定所述第二缓存地址的待访问次数与已访问次数不同。根据本专利技术实施例,还提供一种基于FPGA的指针回收装置,所述FPGA作为网络设备的缓存,所述装置包括:第一更新模块,用于获取待提取报文缓存指针后,更新所述待提取报文缓存指针对应的第一缓存地址的待访问次数;以及,第二更新模块,用于获取已提取报文缓存指针后,更新所述已提取报文缓存指针对应的第二缓存地址的已访问次数;确定模块,用于确定所述第二缓存地址的待访问次数与已访问次数是否相同;回收模块,用于若确定所述第二缓存地址的待访问次数与已访问次数相同,则回收所述第二缓存地址对应的指针。具体的,所述第一更新模块,具体用于:从所述缓存包括的第一存储器中读取所述待提取报文缓存指针对应的第一缓存地址的第一数据,所述第一存储器与所述缓存的缓存地址相同;将所述第一数据增加第一设定数值后,得到所述待访问次数;将所述待访问次数写入所述第一存储器中的所述第一缓存地址中和所述缓存包括的第二存储器中的所述第一缓存地址中,所述第二存储器与所述缓存的缓存地址相同。具体的,所述第一更新模块,用于将所述第一数据增加第一设定数值后,得到所述待访问次数,具体用于:确定在设定时长之前是否执行过所述从所述缓存包括的第一存储器中读取所述待提取报文缓存指针对应的第一缓存地址的第一数据的步骤;若确定在所述设定时长之前执行过所述从所述缓存包括的第一存储器中读取所述本文档来自技高网
...

【技术保护点】
1.一种基于现场可编程门阵列FPGA的指针回收方法,所述FPGA作为网络设备的缓存,其特征在于,所述方法包括:获取待提取报文缓存指针后,更新所述待提取报文缓存指针对应的第一缓存地址的待访问次数;以及,获取已提取报文缓存指针后,更新所述已提取报文缓存指针对应的第二缓存地址的已访问次数;确定所述第二缓存地址的待访问次数与已访问次数是否相同;若确定所述第二缓存地址的待访问次数与已访问次数相同,则回收所述第二缓存地址对应的指针。

【技术特征摘要】
1.一种基于现场可编程门阵列FPGA的指针回收方法,所述FPGA作为网络设备的缓存,其特征在于,所述方法包括:获取待提取报文缓存指针后,更新所述待提取报文缓存指针对应的第一缓存地址的待访问次数;以及,获取已提取报文缓存指针后,更新所述已提取报文缓存指针对应的第二缓存地址的已访问次数;确定所述第二缓存地址的待访问次数与已访问次数是否相同;若确定所述第二缓存地址的待访问次数与已访问次数相同,则回收所述第二缓存地址对应的指针。2.如权利要求1所述的方法,其特征在于,更新所述待提取报文缓存指针对应的第一缓存地址的待访问次数,具体包括:从所述缓存包括的第一存储器中读取所述待提取报文缓存指针对应的第一缓存地址的第一数据,所述第一存储器与所述缓存的缓存地址相同;将所述第一数据增加第一设定数值后,得到所述待访问次数;将所述待访问次数写入所述第一存储器中的所述第一缓存地址中和所述缓存包括的第二存储器中的所述第一缓存地址中,所述第二存储器与所述缓存的缓存地址相同。3.如权利要求2所述的方法,其特征在于,将所述第一数据增加第一设定数值后,得到所述待访问次数,具体包括:确定在设定时长之前是否执行过所述从所述缓存包括的第一存储器中读取所述待提取报文缓存指针对应的第一缓存地址的第一数据的步骤;若确定在所述设定时长之前执行过所述从所述缓存包括的第一存储器中读取所述待提取报文缓存指针对应的第一缓存地址的第一数据的步骤,则将所述第一数据增加2;若确定在所述设定时长之前未执行过所述从所述缓存包括的第一存储器中读取所述待提取报文缓存指针对应的第一缓存地址的第一数据的步骤,则将所述第一数据增加1。4.如权利要求2所述的方法,其特征在于,更新所述已提取报文缓存指针对应的第二缓存地址的已访问次数,具体包括:从所述缓存包括的第三存储器中读取所述已提取报文缓存指针对应的第二缓存地址的第二数据,所述第三存储器与所述缓存的缓存地址相同;将所述第二数据增加第二设定数值后,得到所述已访问次数;将所述已访问次数写入所述第三存储器的所述第二缓存地址中。5.如权利要求4所述的方法,其特征在于,将所述第二数据增加第二设定数值后,得到所述已访问次数,具体包括:确定在设定时长之前是否执行过所述从所述缓存包括的第三存储器中读取所述已提取报文缓存指针对应的第二缓存地址的第二数据的步骤;若确定在所述设定时长之前执行过所述从所述缓存包括的第三存储器中读取所述已提取报文缓存指针对应的第二缓存地址的第二数据的步骤,则将所述第二数据增加2;若确定在所述设定时长之前未执行过所述从所述缓存包括的第三存储器中读取所述已提取报文缓存指针对应的第二缓存地址的第二数据的步骤,则将所述第二数据增加1。6.如权利要求4所述的方法,其特征在于,确定所述第二缓存地址的待访问次数与已访问次数是否相同,具体包括:读取所述第二存储器的所述第二缓存地址的第三数据;确定所述第三数据与所述已访问次数是否相同;若确定所述第三数据与所述已访问次数相同,则确定所述第二缓存地址的待访问次数与已访问次数相同;若确定所述第三数据与所述已访问次数不同,则确定所述第二缓存地址的待访问次数与已访问次数不同。7.一种基于FPGA的...

【专利技术属性】
技术研发人员:王珊
申请(专利权)人:锐捷网络股份有限公司
类型:发明
国别省市:福建,35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1