一种缓存管理方法及装置制造方法

文档序号:6505675阅读:215来源:国知局
一种缓存管理方法及装置制造方法
【专利摘要】本发明公开了一种缓存管理方法及装置,该方法,应用于现场可编程门阵列FPGA实现航电全双工实时以太网AFDX通信协议的过程中,FPGA管理存储器的场景下,包括:确定存储器可使用的连续地址段的起始地址和结束地址,按照预定义的内存片长度,在所述起始地址和结束地址的范围内对存储器进行分片得到内存片,保存分片得到的内存片的首地址;在接收到内存请求方发送的申请分配信号后,查询是否有可用的内存片,如果有,则按照内存请求方请求内存的大小为内存请求方分配内存片,并将分配的内存片的首地址发送给内存请求方。本发明能够实现在AFDX通信协议的FPGA实现过程中缓存的有效分配和释放。
【专利说明】一种缓存管理方法及装置

【技术领域】
[0001]本发明涉及航电全双工实时以太网通信协议的实现,尤其涉及一种缓存管理方法及装置。

【背景技术】
[0002]AFDX (Av1nics Full Duplex Switched Ethernet,航电全双工实时以太网)是空中客车公司根据ARINC664规范,针对确定的飞行器数据网络(Aircraft Data Networks)而实现的技术。目前已被广泛用于互连航空飞行器中的电子系统,如发动机、飞行控制部件、巡航系统等。迄今为止,AFDX已使用在A380,A400M和波音B787项目中。
[0003]在该协议的实现过程中,需要大容量的存储器对数据包进行缓存,那么就需要对该大容量存储器的存储空间进行管理,如果使用FPGA (Field Programmable Gate Array,现场可编程门阵列)进行存储器的管理,目前没有合适的方式,或者不适用于AFDX协议实现过程中的数据缓存管理。


【发明内容】

[0004]本发明要解决的技术问题是提供一种缓存管理方法及装置,能够在AFDX通信协议的FPGA实现过程,实现FPGA管理存储器。
[0005]为解决上述技术问题,本发明的一种缓存管理方法,应用于现场可编程门阵列FPGA实现航电全双工实时以太网AFDX通信协议的过程中,FPGA管理存储器的场景下,包括:
[0006]确定存储器可使用的连续地址段的起始地址和结束地址,按照预定义的内存片长度,在所述起始地址和结束地址的范围内对存储器进行分片得到内存片,保存分片得到的内存片的首地址;
[0007]在接收到内存请求方发送的申请分配信号后,查询是否有可用的内存片,如果有,则按照内存请求方请求内存的大小为内存请求方分配内存片,并将分配的内存片的首地址发送给内存请求方。
[0008]进一步地,所述保存分片得到的内存片的首地址,包括:将分片得到的内存片的首地址写入管理队列;
[0009]所述查询是否有可用的内存片,包括:查询所述管理队列中是否存在内存片的首地址,如果存在,则确定有可用的内存片;
[0010]在将分配的内存片的首地址发送给内存请求方后,从所述管理队列中删除已分配的内存片的首地址。
[0011]进一步地,所述预定义的内存片长度根据不同FPGA管理的存储器进行确定,同一个FPGA管理的存储器的每个内存片的长度均相同。
[0012]进一步地,还包括:
[0013]在所述内存请求方请求内存的大小大于一个内存片的大小时,为所述内存请求方分配多个内存片,并且,所述内存请求方建立分配的多个内存片之间的联系。
[0014]进一步地,还包括:
[0015]在所述内存请求方释放申请到的内存片并将释放的内存片的首地址写入到内存请求方对应的释放队列中后,将内存请求方对应的释放队列中的内存片的首地址写入所述管理队列,并从释放队列中删除。
[0016]进一步地,还包括:
[0017]在将分配的内存片的首地址发送给内存请求方时,向内存请求方发送地址有效信号,通过地址有效信号向内存请求方指示发送的内存片的首地址有效。
[0018]进一步地,一种缓存管理装置,应用于现场可编程门阵列FPGA实现航电全双工实时以太网AFDX通信协议的过程中,FPGA管理存储器的场景下,包括:管理队列初始化模块和内存分配模块,其中:
[0019]所述管理队列初始化模块,用于确定存储器可使用的连续地址段的起始地址和结束地址,按照预定义的内存片长度,在所述起始地址和结束地址的范围内对存储器进行分片得到内存片,保存分片得到的内存片的首地址;
[0020]所述内存分配模块,用于在接收到内存请求方发送的申请分配信号后,查询是否有可用的内存片,如果有,则按照内存请求方请求内存的大小为内存请求方分配内存片,并将分配的内存片的首地址发送给内存请求方。
[0021]进一步地,所述管理队列初始化模块,具体用于将分片得到的内存片的首地址写入管理队列;
[0022]所述内存分配模块,具体用于查询所述管理队列中是否存在内存片的首地址,如果存在,则确定有可用的内存片;还用于在将分配的内存片的首地址发送给内存请求方后,从所述管理队列中删除已分配的内存片的首地址。
[0023]进一步地,所述预定义的内存片长度根据不同的FPGA管理的存储器进行确定,同一个FPGA管理的存储器的每个内存片的长度均相同。
[0024]进一步地,该装置还包括内存释放管理模块,其中:
[0025]所述内存释放管理模块,用于在所述内存请求方释放申请到的内存片并将释放的内存片的首地址写入内存请求方对应的释放队列中后,将内存请求方对应的释放队列中的内存片的首地址写入所述管理队列,并从释放队列中删除。
[0026]综上所述,本发明通过对存储器的可使用的连续地址段进行分片,为内存请求方分配内存片,实现FPGA对存储器的管理,能够实现在AFDX通信协议的FPGA实现过程中缓存的有效分配和释放。

【专利附图】

【附图说明】
[0027]图1为本发明实施方式的缓存管理方法的流程图;
[0028]图2为本发明实施方式的缓存管理装置的架构图。

【具体实施方式】
[0029]为使本申请的目的、技术方案和优点更加清楚明白,下文中将结合附图对本申请的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
[0030]如图1所示,本实施方式的缓存管理方法应用于对AFDX通信协议的FPGA实现过程中的FPGA进行缓存管理的场景下,包括:
[0031]步骤101:管理队列初始化,管理队列初始化模块确定可以使用的连续地址段的起始地址和结束地址;
[0032]存储器的可以使用的连续地址段是指在此地址段范围内的连续内存空间可以使用。
[0033]本实施方式中将实现过程中使用到的不同种类的存储器抽象成为一个通过地址寻址的、带有数据输入输出接口的存储器,这样对于地址的管理将会简化很多程序。
[0034]步骤102:按照预定义的内存片长度,对连续地址段进行分片,保存分片得到的内存片的首地址;
[0035]保存分片得到的内存片的首地址,包括:将分片得到的内存片的首地址写入管理队列。本实施方式中通过管理队列保存内存片的首地址可以方便的管理内存片,通过内存片的首地址可以方便的定位到相应的内存片,通过管理队列保存内存片的首地址,可以方便的进行内存片使用情况查询以及内存片分配等操作。
[0036]对存储器分片的过程直到对起始地址和结束地址范围内的内存空间分片完毕,或者管理队列满,即完成了管理队列的初始化。
[0037]分片的过程是一个计算的过程,按照预定义的内存片长度计算出起始地址和结束地址范围内的每个内存片的首地址。
[0038]如,对于一个8K的连续地址段,预定义的内存片长度2K,那么可以分片出4个内存片,将4个内存片的首地址顺序写到管理队列中。
[0039]本实施方式中考虑到使用FPGA实现存储器管理时,对于零散的或者变长的内存进行管理是很难实现的,所以在实现过程中将存储器进行定长分片处理,每次根据内存请求方请求内存的大小,使用一个或多个内存片。
[0040]预定义的内存片长度的确定,根据不同FPGA管理的存储器进行确定,对于不同的FPGA管理的不同的存储器预定义的内存片长度可以不相同,一个FPGA管理的存储器的每个内存片的长度都是相同的。
[0041]因为地址都是以2的N次方对齐的,所以内存片的大小也需是2的N次方才是合理的。考虑到AFDX通信协议的每个数据包最大不超过1518字节,所以本实施方式中可以定义的内存片长度为2K字节,也即每次使用时以2K字节为单位进行使用。
[0042]管理队列可以采用先入先出队列,在系统初始化过程中将可以使用的连续地址段进行分片后,将每个内存片的首地址存入先入先出队列中进行管理。存储器需要不断的循环利用,使用过的内存片是需要不断重新使用的,使用时将内存片分配出去,当内存片不再使用时,再归还到管理队列中。因为每一个内存片不是顺序使用、顺序归还的,所以采用先入先出队列,首地址先进入管理队列的内存片先被使用,保证内存片的有序使用。
[0043]步骤103:内存分配模块在接收到内存请求方发送的申请分配信号后,查询是否有可用的内存片,如果有,则按照内存请求方请求内存的大小为内存请求方分配内存片,将分配的内存片的首地址发送给内存请求方;
[0044]查询是否有可用的内存片,包括:查询管理队列中是否存在内存片的首地址,如果存在,则确定有可用的内存片;并且,本实施方式中,在将分配的内存片的首地址发送给内存请求方后,还将分配的内存片的首地址从管理队列中删除。
[0045]在管理队列采用先入先出队列时,如果管理队列中存在多个内存片的首地址,而内存请求方只需要一个内存片,则将管理队列中的多个内存片的首地址中最先进入管理队列的首地址对应的内存片分配给内存请求方。
[0046]在将分配的内存片的首地址发送给内存请求方时,内存分配模块还向内存请求方发送地址有效信号,通过地址有效信号向内存请求方指示发送的内存片的首地址有效。
[0047]在内存的分配中有三个关键信号,申请分配信号,地址有效信号和分配地址输出信号(携带分配的内存片的首地址),每接收到一次有效的内存请求方发出的申请分配信号,如果管理队列中有内存片的首地址,则为内存请求方分配内存片,向内存请求方发送地址有效信号和分配的内存片的首地址,完成地址分配;如果管理队列已经为空,即没有可用的内存片可以分配,则需要等待有内存片时再为内存请求方分配内存片。直到有释放内存片的内存请求方时,才会有可用的内存片,本实施方式中,可以设置一等待时间阈值,在到达等待时间阈值时,如果任然没有可用的内存片,则向内存请求方发送分配失败响应。
[0048]在内存请求方请求的内存大于一个内存片的大小时,为内存请求方分配多个内存片,并且,由内存请求方建立分配的多个内存片之间的联系。
[0049]内存片与内存片之前的联系可以通过地址索引的方式建立,地址索引是指内存请求方在前一个内存片中存储后面一个内存片的首地址。
[0050]步骤104:内存释放管理模块在内存请求方释放申请到的内存片并将释放的内存片的首地址写入到内存请求方对应的释放队列中后,将内存请求方对应的释放队列中的内存片的首地址写入管理队列,并从释放队列中删除内存片的首地址。
[0051]内存释放的过程是每一个需要释放内存的模块(内存请求方)对应一个释放队列,该释放队列缓存需要释放内存的模块释放出的内存片的首地址,内存释放管理模块定期或在需要释放内存的模块请求后,将需要释放内存的模块对应的缓存队列中的内存片的首地址写入管理队列,并从释放队列中删除内存片的首地址。设置缓存队列的主要原因是防止不同模块同时需要释放内存片时,同时对管理队列进行操作而产生冲突,导致内存不能正常释放,从而导致内存泄露。
[0052]如图2所示,本实施方式还公开了一种缓存管理装置,应用于FPGA实现AFDX通信协议的过程中,FPGA管理存储器的场景下,包括:管理队列初始化模块和内存分配模块,其中:
[0053]管理队列初始化模块,用于确定存储器可使用的连续地址段的起始地址和结束地址,按照预定义的内存片长度,在起始地址和结束地址的范围内对存储器进行分片得到内存片,保存分片得到的内存片的首地址;
[0054]内存分配模块,用于在接收到内存请求方发送的申请分配信号后,查询是否有可用的内存片,如果有,则按照内存请求方请求内存的大小为内存请求方分配内存片,并将分配的内存片的首地址发送给内存请求方。
[0055]管理队列初始化模块,具体用于将分片得到的内存片的首地址写入管理队列;
[0056]内存分配模块,具体用于查询管理队列中是否存在内存片的首地址,如果存在,则确定有可用的内存片;还用于在将分配的内存片的首地址发送给内存请求方后,从管理队列中删除已分配的内存片的首地址。
[0057]预定义的内存片长度根据不同的FPGA管理的存储器进行确定,同一个FPGA管理的存储器的每个内存片的长度均相同。
[0058]该装置还包括内存释放管理模块,其中:
[0059]内存释放管理模块,用于在内存请求方释放申请到的内存片并将释放的内存片的首地址写入内存请求方对应的释放队列中后,将内存请求方对应的释放队列中的内存片的首地址写入管理队列,并从释放队列中删除。
[0060]本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。
[0061]以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
【权利要求】
1.一种缓存管理方法,其特征在于,应用于现场可编程门阵列FPGA实现航电全双工实时以太网AFDX通信协议的过程中,FPGA管理存储器的场景下,包括: 确定存储器可使用的连续地址段的起始地址和结束地址,按照预定义的内存片长度,在所述起始地址和结束地址的范围内对存储器进行分片得到内存片,保存分片得到的内存片的首地址; 在接收到内存请求方发送的申请分配信号后,查询是否有可用的内存片,如果有,则按照内存请求方请求内存的大小为内存请求方分配内存片,并将分配的内存片的首地址发送给内存请求方。
2.如权利要求1所述的方法,其特征在于: 所述保存分片得到的内存片的首地址,包括:将分片得到的内存片的首地址写入管理队列; 所述查询是否有可用的内存片,包括:查询所述管理队列中是否存在内存片的首地址,如果存在,则确定有可用的内存片; 在将分配的内存片的首地址发送给内存请求方后,从所述管理队列中删除已分配的内存片的首地址。
3.如权利要求1所述的方法,其特征在于,所述预定义的内存片长度根据不同FPGA管理的存储器进行确定,同一个FPGA管理的存储器的每个内存片的长度均相同。
4.如权利要求1所述的方法,其特征在于,还包括: 在所述内存请求方请求内存的大小大于一个内存片的大小时,为所述内存请求方分配多个内存片,并且,所述内存请求方建立分配的多个内存片之间的联系。
5.如权利要求1所述的方法,其特征在于,还包括: 在所述内存请求方释放申请到的内存片并将释放的内存片的首地址写入到内存请求方对应的释放队列中后,将内存请求方对应的释放队列中的内存片的首地址写入所述管理队列,并从释放队列中删除。
6.如权利要求1所述的方法,其特征在于,还包括: 在将分配的内存片的首地址发送给内存请求方时,向内存请求方发送地址有效信号,通过地址有效信号向内存请求方指示发送的内存片的首地址有效。
7.一种缓存管理装置,其特征在于,应用于现场可编程门阵列FPGA实现航电全双工实时以太网AFDX通信协议的过程中,FPGA管理存储器的场景下,包括:管理队列初始化模块和内存分配模块,其中: 所述管理队列初始化模块,用于确定存储器可使用的连续地址段的起始地址和结束地址,按照预定义的内存片长度,在所述起始地址和结束地址的范围内对存储器进行分片得到内存片,保存分片得到的内存片的首地址; 所述内存分配模块,用于在接收到内存请求方发送的申请分配信号后,查询是否有可用的内存片,如果有,则按照内存请求方请求内存的大小为内存请求方分配内存片,并将分配的内存片的首地址发送给内存请求方。
8.如权利要求7所述的装置,其特征在于: 所述管理队列初始化模块,具体用于将分片得到的内存片的首地址写入管理队列; 所述内存分配模块,具体用于查询所述管理队列中是否存在内存片的首地址,如果存在,则确定有可用的内存片;还用于在将分配的内存片的首地址发送给内存请求方后,从所述管理队列中删除已分配的内存片的首地址。
9.如权利要求7所述的装置,其特征在于:所述预定义的内存片长度根据不同的FPGA管理的存储器进行确定,同一个FPGA管理的存储器的每个内存片的长度均相同。
10.如权利要求7所述的装置,其特征在于,该装置还包括内存释放管理模块,其中: 所述内存释放管理模块,用于在所述内存请求方释放申请到的内存片并将释放的内存片的首地址写入内存请求方对应的释放队列中后,将内存请求方对应的释放队列中的内存片的首地址写入所述管理队列,并从释放队列中删除。
【文档编号】G06F12/08GK104281539SQ201310289218
【公开日】2015年1月14日 申请日期:2013年7月10日 优先权日:2013年7月10日
【发明者】苗佳旺, 杨水华, 胡永锋, 原中亮, 安东明, 李鹏英, 汪伟, 赵伟华, 阳坤, 郑云龙, 吴顺 申请人:北京旋极信息技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1