CN109660471A - 基于fpga的指针回收方法及装置 - Google Patents
基于fpga的指针回收方法及装置 Download PDFInfo
- Publication number
- CN109660471A CN109660471A CN201811530119.4A CN201811530119A CN109660471A CN 109660471 A CN109660471 A CN 109660471A CN 201811530119 A CN201811530119 A CN 201811530119A CN 109660471 A CN109660471 A CN 109660471A
- Authority
- CN
- China
- Prior art keywords
- data
- buffer address
- memory
- pointer
- buffer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/80—Actions related to the user profile or the type of traffic
- H04L47/806—Broadcast or multicast traffic
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种基于FPGA的指针回收方法及装置,该方法包括:获取待提取报文缓存指针后,更新所述待提取报文缓存指针对应的第一缓存地址的待访问次数;以及,获取已提取报文缓存指针后,更新所述已提取报文缓存指针对应的第二缓存地址的已访问次数;确定所述第二缓存地址的待访问次数与已访问次数是否相同;若确定所述第二缓存地址的待访问次数与已访问次数相同,则回收所述第二缓存地址对应的指针。该方案可以实现及时更新缓存资源,避免了缓存资源的浪费。
Description
技术领域
本发明涉及通信技术领域,尤指一种基于现场可编程门阵列(Field-Programmable Gate Array,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作为网络设备的缓存,所述装置包括:
第一更新模块,用于获取待提取报文缓存指针后,更新所述待提取报文缓存指针对应的第一缓存地址的待访问次数;以及,
第二更新模块,用于获取已提取报文缓存指针后,更新所述已提取报文缓存指针对应的第二缓存地址的已访问次数;
确定模块,用于确定所述第二缓存地址的待访问次数与已访问次数是否相同;
回收模块,用于若确定所述第二缓存地址的待访问次数与已访问次数相同,则回收所述第二缓存地址对应的指针。
具体的,所述第一更新模块,具体用于:
从所述缓存包括的第一存储器中读取所述待提取报文缓存指针对应的第一缓存地址的第一数据,所述第一存储器与所述缓存的缓存地址相同;
将所述第一数据增加第一设定数值后,得到所述待访问次数;
将所述待访问次数写入所述第一存储器中的所述第一缓存地址中和所述缓存包括的第二存储器中的所述第一缓存地址中,所述第二存储器与所述缓存的缓存地址相同。
具体的,所述第一更新模块,用于将所述第一数据增加第一设定数值后,得到所述待访问次数,具体用于:
确定在设定时长之前是否执行过所述从所述缓存包括的第一存储器中读取所述待提取报文缓存指针对应的第一缓存地址的第一数据的步骤;
若确定在所述设定时长之前执行过所述从所述缓存包括的第一存储器中读取所述待提取报文缓存指针对应的第一缓存地址的第一数据的步骤,则将所述第一数据增加2;
若确定在所述设定时长之前未执行过所述从所述缓存包括的第一存储器中读取所述待提取报文缓存指针对应的第一缓存地址的第一数据的步骤,则将所述第一数据增加1。
具体的,所述第二更新模块,用于更新所述已提取报文缓存指针对应的第二缓存地址的已访问次数,具体用于:
从所述缓存包括的第三存储器中读取所述已提取报文缓存指针对应的第二缓存地址的第二数据,所述第三存储器与所述缓存的缓存地址相同;
将所述第二数据增加第二设定数值后,得到所述已访问次数;
将所述已访问次数写入所述第三存储器的所述第二缓存地址中。
具体的,所述第二更新模块,用于将所述第二数据增加第二设定数值后,得到所述已访问次数,具体用于:
确定在设定时长之前是否执行过所述从所述缓存包括的第三存储器中读取所述已提取报文缓存指针对应的第二缓存地址的第二数据的步骤;
若确定在所述设定时长之前执行过所述从所述缓存包括的第三存储器中读取所述已提取报文缓存指针对应的第二缓存地址的第二数据的步骤,则将所述第二数据增加2;
若确定在所述设定时长之前未执行过所述从所述缓存包括的第三存储器中读取所述已提取报文缓存指针对应的第二缓存地址的第二数据的步骤,则将所述第二数据增加1。
具体的,所述确定模块,具体用于:
读取所述第二存储器的所述第二缓存地址的第三数据;
确定所述第三数据与所述已访问次数是否相同;
若确定所述第三数据与所述已访问次数相同,则确定所述第二缓存地址的待访问次数与已访问次数相同;若确定所述第三数据与所述已访问次数不同,则确定所述第二缓存地址的待访问次数与已访问次数不同。
本发明有益效果如下:
本发明实施例提供一种基于FPGA的指针回收方法及装置,通过获取待提取报文缓存指针后,更新所述待提取报文缓存指针对应的第一缓存地址的待访问次数;以及,获取已提取报文缓存指针后,更新所述已提取报文缓存指针对应的第二缓存地址的已访问次数;确定所述第二缓存地址的待访问次数与已访问次数是否相同;若确定所述第二缓存地址的待访问次数与已访问次数相同,则回收所述第二缓存地址对应的指针。该方案中,针对同一缓存地址,可以实时统计出待访问次数与已访问次数是否相同,若待访问次数与已访问次数相同,说明已经完成了报文提取,该缓存地址中的报文已经完成转发,可以释放该缓存地址,从而可以直接回收该缓存地址对应的指针,以便于分配给后续报文,从而可以实现及时更新缓存资源,避免了缓存资源的浪费。
附图说明
图1为现有技术中网络设备的单播报文的转发示意图;
图2为现有技术中网络设备的组播报文的转发示意图;
图3为现有技术中网络设备的缓存的结构示意图;
图4为本发明实施例中一种基于FPGA的指针回收方法的流程图;
图5为本发明实施例中一种基于FPGA的指针回收装置的结构示意图。
具体实施方式
针对现有技术中存在的无法对缓存资源进行及时更新,极大的浪费了缓存资源的问题,本发明实施例提供一种基于FPGA的指针回收方法,FPGA可以作为网络设备的缓存,该方法可以应用在FPGA的指针回收模块中,该方法的流程如图4所示,执行步骤如下:
S41:获取待提取报文缓存指针后,更新待提取报文缓存指针对应的第一缓存地址的待访问次数。
在背景技术中介绍过报文转发的过程:报文packet0从端口port0进入,在入口处将报文存储在缓存内,会生成携带报文缓存指针的钥匙(KEY),同时解析报文头部提取查表信息,根据查表信息和KEY中携带的报文缓存指针进入查表引擎获取到查表结果后,根据KEY中携带的报文缓存指针从缓存内提取报文,并转发至相应出口。
KEY中携带的报文缓存指针就是待提取报文缓存指针,待提取报文缓存指针的数量与查表结果得到的报文转发数量相同,待提取报文缓存指示是由图3中的指针分配模块分配的,分配之后会将这些待提取报文缓存指针同步给图3中的指针回收模块。
指针回收模块获取待提取报文缓存指针后,更新待提取报文缓存指针对应的第一缓存地址的待访问次数。
S42:获取已提取报文缓存指针后,更新已提取报文缓存指针对应的第二缓存地址的已访问次数。
网络设备在完成转发报文后,会将已转发报文的指针同步给指针回收模块。
指针回收模块获取已提取报文缓存指针后,更新已提取报文缓存指针对应的第二缓存地址的已访问次数。
其中,S41与S42并没有严格的先后执行顺序,可以先执行S41再执行S42,也可以先执行S42再执行S41,还可以同时执行S41和S42,在这里仅仅是要说明S41与S42中的更新过程而已,其中第一缓存地址与第二缓存地址可以相同,也可以不同。
S43:确定第二缓存地址的待访问次数与已访问次数是否相同。
S44:若确定第二缓存地址的待访问次数与已访问次数相同,则回收第二缓存地址对应的指针。
该方案中,针对同一缓存地址,可以实时统计出待访问次数与已访问次数是否相同,若待访问次数与已访问次数相同,说明已经完成了报文提取,该缓存地址中的报文已经完成转发,可以释放该缓存地址,从而可以直接回收该缓存地址对应的指针,以便于分配给后续报文,从而可以实现及时更新缓存资源,避免了缓存资源的浪费。
缓存中每个缓存地址的待访问次数与已访问次数可以有多种存储方式,下面列举一种方式进行说明,缓存中包括第一存储器、第二存储器和第三存储器,第一存储器、第二存储器和第三存储器与缓存的存储地址相同,其中,缓存中的缓存地址存储的是报文,而第一存储器和第二存储器存储的是缓存地址的待访问次数,第三存储器存储的是缓存地址的已访问次数,之所以这样设置是因为目前的存储器最常使用的是随机存取存储器(randomaccess memory,RAM),而针对同一缓存地址的操作只有一个读端口和一个写端口,下面会详细说明这三个存储器的使用过程。
具体的,上述S41中更新待提取报文缓存指针对应的第一缓存地址的待访问次数,实现过程具体包括:
从缓存包括的第一存储器中读取待提取报文缓存指针对应的第一缓存地址的第一数据,第一存储器与缓存的缓存地址相同;
将第一数据增加第一设定数值后,得到待访问次数;
将待访问次数写入第一存储器中的第一缓存地址中和缓存包括的第二存储器中的第一缓存地址中,第二存储器与缓存的缓存地址相同。
由于第一存储器和第二存储器中的缓存地址中保存的是待访问次数,根据RAM的工作原理,在更新待提取报文缓存指针对应的第一缓存地址的待访问次数时,需要从第一存储器中读取待提取报文缓存指针对应的第一缓存地址的第一数据,将第一数据增加第一设定数值后,得到待访问次数,将待访问次数写入第一存储器中的第一缓存地址中和第二存储器中的第一缓存地址中,这样才能完成更新待提取报文缓存指针对应的第一缓存地址的待访问次数。
相应地,上述将第一数据增加第一设定数值后,得到待访问次数,具体包括:
确定在设定时长之前是否执行过从缓存包括的第一存储器中读取待提取报文缓存指针对应的第一缓存地址的第一数据的步骤;
若确定在设定时长之前执行从缓存包括的第一存储器中读取待提取报文缓存指针对应的第一缓存地址的第一数据的步骤,则将第一数据增加2;
若确定在设定时长之前未执行过从缓存包括的第一存储器中读取待提取报文缓存指针对应的第一缓存地址的第一数据的步骤,则将第一数据增加1。
由于不可同一时刻对第一存储器和第二存储器的同一缓存地址即读又写,而RAM从发起读取到输出读取数据有2个时钟间隔,若在连续两个时钟间隔都对同一缓存地址执行读取操作,相应地会有两次写入操作,那么就可以直接将这两次合并为一次写入,直接将第一数据加2即可;反之,则将第一数据加1。
具体的,上述S42中更新已提取报文缓存指针对应的第二缓存地址的已访问次数,实现过程具体包括:
从缓存包括的第三存储器中读取已提取报文缓存指针对应的第二缓存地址的第二数据,第三存储器与缓存的缓存地址相同;
将第二数据增加第二设定数值后,得到已访问次数;
将已访问次数写入第三存储器的第二缓存地址中。
由于第三存储器存储的是缓存地址的已访问次数,根据RAM的工作原理,在更新已提取报文缓存指针对应的第二缓存地址的已访问次数时,需要从第三存储器中读取已提取报文缓存指针对应的第二缓存地址的第二数据,将第二数据增加第二设定数值后,得到已访问次数,将已访问次数写入第三存储器的第二缓存地址中,这样才能完成更新已提取报文缓存指针对应的第二缓存地址的已访问次数。
相应地,上述将第二数据增加第二设定数值后,得到已访问次数,具体包括:
确定在设定时长之前是否执行过从缓存包括的第三存储器中读取已提取报文缓存指针对应的第二缓存地址的第二数据的步骤;
若确定在设定时长之前执行过从缓存包括的第三存储器中读取已提取报文缓存指针对应的第二缓存地址的第二数据的步骤,则将第二数据增加2;
若确定在设定时长之前未执行过从缓存包括的第三存储器中读取已提取报文缓存指针对应的第二缓存地址的第二数据的步骤,则将第二数据增加1。
由于不可同一时刻对第一存储器和第二存储器的同一缓存地址既读又写,而RAM从发起读取到输出读取数据有2个时钟间隔,若在连续两个时钟间隔都对同一缓存地址执行读取操作,相应地会有两次写入操作,那么就可以直接将这两次合并为一次写入,将直接将第一数据加2即可;反之,则将第一数据加1。
具体的,上述S43中确定第二缓存地址的待访问次数与已访问次数是否相同,实现过程具体包括:
读取第二存储器的第二缓存地址的第三数据;
确定第三数据与已访问次数是否相同;
若确定第三数据与已访问次数相同,则确定第二缓存地址的待访问次数与已访问次数相同;若确定第三数据与已访问次数不同,则确定第二缓存地址的待访问次数与已访问次数不同。
由于第一存储器的读端口和写端口都已经使用过,第二存储器的写端口已经使用过,第三存储器的写端口和读端口已经使用过,因此,只剩第二存储器的读端口未使用,就可以读取第二存储器的第二缓存地址的第三数据与之前确定的已访问次数进行比较,比较二者是否相同,若相同,说明缓存中第二缓存地址的报文已全部提取完毕,则确定第二缓存地址的待访问次数与已访问次数相同;若不同,说明缓存中第二缓存地址的报文还未完全提取,则确定第二缓存地址的待访问次数与已访问次数不同。
基于同一发明构思,本发明实施例提供一种基于FPGA的指针回收装置,FPGA作为网络设备的缓存,该装置的结构如图5所示,包括:
第一更新模块51,用于获取待提取报文缓存指针后,更新待提取报文缓存指针对应的第一缓存地址的待访问次数;以及,
第二更新模块52,用于获取已提取报文缓存指针后,更新已提取报文缓存指针对应的第二缓存地址的已访问次数;
确定模块53,用于确定第二缓存地址的待访问次数与已访问次数是否相同;
回收模块54,用于若确定第二缓存地址的待访问次数与已访问次数相同,则回收第二缓存地址对应的指针。
具体的,第一更新模块,具体用于:
从缓存中包括的第一存储器中读取待提取报文缓存指针对应的第一缓存地址的第一数据,第一存储器与缓存的缓存地址相同;
将第一数据增加第一设定数值后,得到待访问次数;
将待访问次数写入第一存储器中的第一缓存地址中和缓存包括的第二存储器中的第一缓存地址中,第二存储器与缓存的缓存地址相同。
具体的,第一更新模块,用于将第一数据增加第一设定数值后,得到待访问次数,具体用于:
确定在设定时长之前是否执行过从缓存包括的第一存储器中读取待提取报文缓存指针对应的第一缓存地址的第一数据的步骤;
若确定在设定时长之前执行过从缓存包括的第一存储器中读取待提取报文缓存指针对应的第一缓存地址的第一数据的步骤,则将第一数据增加2;
若确定在设定时长之前未执行过从缓存包括的第一存储器中读取待提取报文缓存指针对应的第一缓存地址的第一数据的步骤,则将第一数据增加1。
具体的,第二更新模块,用于更新已提取报文缓存指针对应的第二缓存地址的已访问次数,具体用于:
从缓存包括的第三存储器中读取已提取报文缓存指针对应的第二缓存地址的第二数据,第三存储器与缓存的缓存地址相同;
将第二数据增加第二设定数值后,得到已访问次数;
将已访问次数写入第三存储器的第二缓存地址中。
具体的,第二更新模块,用于将第二数据增加第二设定数值后,得到已访问次数,具体用于:
确定在设定时长之前是否执行过从缓存包括的第三存储器中读取已提取报文缓存指针对应的第二缓存地址的第二数据的步骤;
若确定在设定时长之前执行过从缓存包括的第三存储器中读取已提取报文缓存指针对应的第二缓存地址的第二数据的步骤,则将第二数据增加2;
若确定在设定时长之前未执行过从缓存包括的第三存储器中读取已提取报文缓存指针对应的第二缓存地址的第二数据的步骤,则将第二数据增加1。
具体的,确定模块,具体用于:
读取第二存储器的第二缓存地址的第三数据;
确定第三数据与已访问次数是否相同;
若确定第三数据与已访问次数相同,则确定第二缓存地址的待访问次数与已访问次数相同;若确定第三数据与已访问次数不同,则确定第二缓存地址的待访问次数与已访问次数不同。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的可选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括可选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
1.一种基于现场可编程门阵列FPGA的指针回收方法,所述FPGA作为网络设备的缓存,其特征在于,所述方法包括:
获取待提取报文缓存指针后,更新所述待提取报文缓存指针对应的第一缓存地址的待访问次数;以及,
获取已提取报文缓存指针后,更新所述已提取报文缓存指针对应的第二缓存地址的已访问次数;
确定所述第二缓存地址的待访问次数与已访问次数是否相同;
若确定所述第二缓存地址的待访问次数与已访问次数相同,则回收所述第二缓存地址对应的指针。
2.如权利要求1所述的方法,其特征在于,更新所述待提取报文缓存指针对应的第一缓存地址的待访问次数,具体包括:
从所述缓存包括的第一存储器中读取所述待提取报文缓存指针对应的第一缓存地址的第一数据,所述第一存储器与所述缓存的缓存地址相同;
将所述第一数据增加第一设定数值后,得到所述待访问次数;
将所述待访问次数写入所述第一存储器中的所述第一缓存地址中和所述缓存包括的第二存储器中的所述第一缓存地址中,所述第二存储器与所述缓存的缓存地址相同。
3.如权利要求2所述的方法,其特征在于,将所述第一数据增加第一设定数值后,得到所述待访问次数,具体包括:
确定在设定时长之前是否执行过所述从所述缓存包括的第一存储器中读取所述待提取报文缓存指针对应的第一缓存地址的第一数据的步骤;
若确定在所述设定时长之前执行过所述从所述缓存包括的第一存储器中读取所述待提取报文缓存指针对应的第一缓存地址的第一数据的步骤,则将所述第一数据增加2;
若确定在所述设定时长之前未执行过所述从所述缓存包括的第一存储器中读取所述待提取报文缓存指针对应的第一缓存地址的第一数据的步骤,则将所述第一数据增加1。
4.如权利要求2所述的方法,其特征在于,更新所述已提取报文缓存指针对应的第二缓存地址的已访问次数,具体包括:
从所述缓存包括的第三存储器中读取所述已提取报文缓存指针对应的第二缓存地址的第二数据,所述第三存储器与所述缓存的缓存地址相同;
将所述第二数据增加第二设定数值后,得到所述已访问次数;
将所述已访问次数写入所述第三存储器的所述第二缓存地址中。
5.如权利要求4所述的方法,其特征在于,将所述第二数据增加第二设定数值后,得到所述已访问次数,具体包括:
确定在设定时长之前是否执行过所述从所述缓存包括的第三存储器中读取所述已提取报文缓存指针对应的第二缓存地址的第二数据的步骤;
若确定在所述设定时长之前执行过所述从所述缓存包括的第三存储器中读取所述已提取报文缓存指针对应的第二缓存地址的第二数据的步骤,则将所述第二数据增加2;
若确定在所述设定时长之前未执行过所述从所述缓存包括的第三存储器中读取所述已提取报文缓存指针对应的第二缓存地址的第二数据的步骤,则将所述第二数据增加1。
6.如权利要求4所述的方法,其特征在于,确定所述第二缓存地址的待访问次数与已访问次数是否相同,具体包括:
读取所述第二存储器的所述第二缓存地址的第三数据;
确定所述第三数据与所述已访问次数是否相同;
若确定所述第三数据与所述已访问次数相同,则确定所述第二缓存地址的待访问次数与已访问次数相同;若确定所述第三数据与所述已访问次数不同,则确定所述第二缓存地址的待访问次数与已访问次数不同。
7.一种基于FPGA的指针回收装置,所述FPGA作为网络设备的缓存,其特征在于,所述装置包括:
第一更新模块,用于获取待提取报文缓存指针后,更新所述待提取报文缓存指针对应的第一缓存地址的待访问次数;以及,
第二更新模块,用于获取已提取报文缓存指针后,更新所述已提取报文缓存指针对应的第二缓存地址的已访问次数;
确定模块,用于确定所述第二缓存地址的待访问次数与已访问次数是否相同;
回收模块,用于若确定所述第二缓存地址的待访问次数与已访问次数相同,则回收所述第二缓存地址对应的指针。
8.如权利要求7所述的装置,其特征在于,所述第一更新模块,具体用于:
从所述缓存包括的第一存储器中读取所述待提取报文缓存指针对应的第一缓存地址的第一数据,所述第一存储器与所述缓存的缓存地址相同;
将所述第一数据增加第一设定数值后,得到所述待访问次数;
将所述待访问次数写入所述第一存储器中的所述第一缓存地址中和所述缓存包括的第二存储器中的所述第一缓存地址中,所述第二存储器与所述缓存的缓存地址相同。
9.如权利要求8所述的装置,其特征在于,所述第一更新模块,用于将所述第一数据增加第一设定数值后,得到所述待访问次数,具体用于:
确定在设定时长之前是否执行过所述从所述缓存包括的第一存储器中读取所述待提取报文缓存指针对应的第一缓存地址的第一数据的步骤;
若确定在所述设定时长之前执行过所述从所述缓存包括的第一存储器中读取所述待提取报文缓存指针对应的第一缓存地址的第一数据的步骤,则将所述第一数据增加2;
若确定在所述设定时长之前未执行过所述从所述缓存包括的第一存储器中读取所述待提取报文缓存指针对应的第一缓存地址的第一数据的步骤,则将所述第一数据增加1。
10.如权利要求8所述的装置,其特征在于,所述第二更新模块,用于更新所述已提取报文缓存指针对应的第二缓存地址的已访问次数,具体用于:
从所述缓存包括的第三存储器中读取所述已提取报文缓存指针对应的第二缓存地址的第二数据,所述第三存储器与所述缓存的缓存地址相同;
将所述第二数据增加第二设定数值后,得到所述已访问次数;
将所述已访问次数写入所述第三存储器的所述第二缓存地址中。
11.如权利要求10所述的装置,其特征在于,所述第二更新模块,用于将所述第二数据增加第二设定数值后,得到所述已访问次数,具体用于:
确定在设定时长之前是否执行过所述从所述缓存包括的第三存储器中读取所述已提取报文缓存指针对应的第二缓存地址的第二数据的步骤;
若确定在所述设定时长之前执行过所述从所述缓存包括的第三存储器中读取所述已提取报文缓存指针对应的第二缓存地址的第二数据的步骤,则将所述第二数据增加2;
若确定在所述设定时长之前未执行过所述从所述缓存包括的第三存储器中读取所述已提取报文缓存指针对应的第二缓存地址的第二数据的步骤,则将所述第二数据增加1。
12.如权利要求11所述的装置,其特征在于,所述确定模块,具体用于:
读取所述第二存储器的所述第二缓存地址的第三数据;
确定所述第三数据与所述已访问次数是否相同;
若确定所述第三数据与所述已访问次数相同,则确定所述第二缓存地址的待访问次数与已访问次数相同;若确定所述第三数据与所述已访问次数不同,则确定所述第二缓存地址的待访问次数与已访问次数不同。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811530119.4A CN109660471B (zh) | 2018-12-14 | 2018-12-14 | 基于fpga的指针回收方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811530119.4A CN109660471B (zh) | 2018-12-14 | 2018-12-14 | 基于fpga的指针回收方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109660471A true CN109660471A (zh) | 2019-04-19 |
CN109660471B CN109660471B (zh) | 2022-08-16 |
Family
ID=66114101
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811530119.4A Active CN109660471B (zh) | 2018-12-14 | 2018-12-14 | 基于fpga的指针回收方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109660471B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110297732A (zh) * | 2019-06-14 | 2019-10-01 | 杭州迪普科技股份有限公司 | 一种fpga状态的检测方法及装置 |
CN112242964A (zh) * | 2020-12-18 | 2021-01-19 | 苏州裕太微电子有限公司 | 一种交换机中的缓存单元释放系统及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1452351A (zh) * | 2002-04-17 | 2003-10-29 | 华为技术有限公司 | 以太网交换芯片传输数据过程中缓存的管理和分配方法 |
CN1863132A (zh) * | 2005-11-23 | 2006-11-15 | 华为技术有限公司 | 一种缓存管理系统与方法 |
US20150304124A1 (en) * | 2012-10-12 | 2015-10-22 | Zte Corporation | Message Processing Method and Device |
-
2018
- 2018-12-14 CN CN201811530119.4A patent/CN109660471B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1452351A (zh) * | 2002-04-17 | 2003-10-29 | 华为技术有限公司 | 以太网交换芯片传输数据过程中缓存的管理和分配方法 |
CN1863132A (zh) * | 2005-11-23 | 2006-11-15 | 华为技术有限公司 | 一种缓存管理系统与方法 |
US20150304124A1 (en) * | 2012-10-12 | 2015-10-22 | Zte Corporation | Message Processing Method and Device |
Non-Patent Citations (1)
Title |
---|
李平等: "网络交换中的缓存管理研究与实现", 《微电子学与计算机》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110297732A (zh) * | 2019-06-14 | 2019-10-01 | 杭州迪普科技股份有限公司 | 一种fpga状态的检测方法及装置 |
CN110297732B (zh) * | 2019-06-14 | 2024-01-23 | 杭州迪普科技股份有限公司 | 一种fpga状态的检测方法及装置 |
CN112242964A (zh) * | 2020-12-18 | 2021-01-19 | 苏州裕太微电子有限公司 | 一种交换机中的缓存单元释放系统及方法 |
CN112242964B (zh) * | 2020-12-18 | 2021-06-04 | 苏州裕太微电子有限公司 | 一种交换机中的缓存单元释放系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109660471B (zh) | 2022-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106407430B (zh) | 一种基于阶段桶的复杂智能合约状态同步方法 | |
US20230025449A1 (en) | Method and apparatus for dynamically adding consensus node in blockchain | |
CN100390747C (zh) | 全程化实时系统中基于内存数据库的软双机备份方法 | |
CN104268159B (zh) | 一种基于动态镜像的实时数据仓库数据预存取方法 | |
CN109660471A (zh) | 基于fpga的指针回收方法及装置 | |
CN104572301A (zh) | 一种资源分配方法和系统 | |
CN101944114A (zh) | 内存数据库和物理数据库间的数据同步方法 | |
CN102760126A (zh) | 一种分布式系统中的数据同步方法和分布式系统 | |
CN105183698A (zh) | 一种基于多核dsp的控制处理系统和方法 | |
CN104615684A (zh) | 一种海量数据通信并发处理方法及系统 | |
CN104504103A (zh) | 一种车辆轨迹点插入性能优化方法及系统、信息采集器、数据库模型 | |
CN106294205A (zh) | 缓存数据处理方法及装置 | |
CN102932424A (zh) | 一种分布式并行文件系统缓存数据同步的方法及系统 | |
CN109992506A (zh) | 调度测试方法、装置、计算机设备和存储介质 | |
CN107783908A (zh) | 一种基于Linux内核内存泄露的检测方法 | |
CN101534477A (zh) | 一种表项管理方法和装置 | |
CN101887399A (zh) | 服务器端无障碍存取高速缓存数据的方法 | |
CN105468699A (zh) | 去重数据统计方法及设备 | |
CN106547584A (zh) | 一种应用程序的回退方法及装置 | |
CN106557434A (zh) | 一种界面缓存方法及系统 | |
CN111259062B (zh) | 一种能够保证分布式数据库全表查询语句结果集顺序的方法和装置 | |
CN101267329A (zh) | 一种会议调度中选取多点控制器的方法、系统及装置 | |
CN108228340A (zh) | 终端控制方法及装置、终端设备及计算机可读存储介质 | |
CN105930100A (zh) | 一种优化usim卡文件读写速度及频率的实现方法 | |
CN111026810B (zh) | 数据同步方法、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |