CN109582594A - 一种内存地址的管理方法、装置、设备和存储介质 - Google Patents
一种内存地址的管理方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN109582594A CN109582594A CN201811479507.4A CN201811479507A CN109582594A CN 109582594 A CN109582594 A CN 109582594A CN 201811479507 A CN201811479507 A CN 201811479507A CN 109582594 A CN109582594 A CN 109582594A
- Authority
- CN
- China
- Prior art keywords
- address
- memory
- memory address
- numerical value
- effective
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
本发明公开了一种内存地址的管理方法、装置、设备和存储介质,该方法包括:接收到内存地址请求指令时,查找本地指针空间中的有效地址和有效地址中存储的数值,所述有效地址与内存地址一一对应;根据内存地址请求指令,发送空闲地址,所述空闲地址为包括空闲位的数值对应的内存地址。本发明无需另行设置进程对内存地址的使用进行监控,以根据有效地址中存储的数值是否有空闲位实时确定空闲地址,从而实现动态确定空闲地址,提高内存地址的管理效率。
Description
技术领域
本发明实施例涉及大数据技术,尤其涉及一种内存地址的管理方法、装置、设备和存储介质。
背景技术
在有线数据通信中,需要使用内存地址进行流管理或存储数据包体,因此需要进行内存地址的管理。目前大多数有线通信设备是靠操作系统来管理内存地址的,由于操作系统为了管理内存地址,需给每个进程都分配独立的地址空间,从而采用操作系统软件来进行内存管理的方式效率比较低,不能满足大流量数据处理的要求;而采用FPGA虽然能按顺序处理大流量数据,但不能运行操作系统,因此无法处理需要动态读写内存的功能。
发明内容
有鉴于此,本发明提供一种内存地址的管理方法、装置、设备和存储介质,以实现动态读写内存地址,以及提高了内存地址的管理效率。
第一方面,本发明实施例提供了一种内存地址的管理方法,包括:
接收到内存地址请求指令时,查找本地指针空间中的有效地址和有效地址中存储的数值,所述有效地址与内存地址一一对应;
根据所述内存地址请求指令,发送空闲地址,所述空闲地址为包括空闲位的数值对应的内存地址。
进一步的,所述内存地址请求指令包括:所需空闲地址个数。
进一步的,在所述查找本地指针空间中的有效地址和有效地址中存储的数值之后,还包括:
确定所述有效地址对应的内存地址总个数是否小于所述所需空闲地址个数;
若所述内存地址总个数小于所述所需空闲地址个数,发送内存地址对应的有效地址请求指令至外部存储器;
接收外部存储器反馈的有效地址和有效地址中存储的数值;
根据有效地址中包括空闲位的数值和有效地址生成对应的内存地址。
进一步的,所述方法还包括:
接收外部模块释放的内存地址;
确定所述内存地址对应的有效地址中存储的数值为非空闲位;
将所述有效地址中存储的数值的非空闲位更新为空闲位;
将更新后的有效地址中存储的数值和有效地址写入本地指针空间。
进一步的,在接收外部模块释放的内存地址之后,还包括:
确定所述内存地址对应的有效地址中存储的数值为空闲位;
生成指针错误标识;
将所述指针错误标识反馈至所述外部模块。
进一步的,在接收外部模块释放的内存地址之后,还包括:
确定所述内存地址对应的有效地址中存储的数值为空闲位;
生成指针错误标识;
将所述指针错误标识反馈至所述外部模块。
进一步的,在接收外部存储器反馈的有效地址和有效地址中存储的数值之后,还包括:
检测并确定所述有效地址中存储的数值包括空闲位。
进一步的,在所述接收到内存地址请求指令之前,还包括:
初始化本地指针空间中所有有效地址中存储的数值。
第二方面,本发明实施例还提供了一种内存地址的管理装置,包括:
查找模块,用于接收到内存地址请求指令时,查找本地指针空间中的有效地址和有效地址中存储的数值,所述有效地址与内存地址一一对应;
第一发送模块,用于根据所述内存地址请求指令,发送空闲地址,所述空闲地址为包括空闲位的数值对应的内存地址。
进一步的,所述内存地址请求指令包括:所需空闲地址个数。
进一步的,所述装置,还包括:
第一确定模块,用于在所述查找本地指针空间中的有效地址和有效地址中存储的数值之后,确定所述有效地址对应的内存地址总个数是否小于所述所需空闲地址个数;
第二发送模块,用于若所述内存地址总个数小于所述所需空闲地址个数,发送内存地址对应的有效地址请求指令至外部存储器;
第一接收模块,用于接收外部存储器反馈的有效地址和有效地址中存储的数值;
第一生成模块,用于根据有效地址中包括空闲位的数值和有效地址生成对应的内存地址。
进一步的,所述装置,还包括:
第二接收模块,用于接收外部模块释放的内存地址;
第二确定模块,用于确定所述内存地址对应的有效地址中存储的数值为非空闲位;
更新模块,用于将所述有效地址中存储的数值的非空闲位更新为空闲位;
写入模块,用于将更新后的有效地址中存储的数值和有效地址写入本地指针空间。
进一步的,所述装置还包括:
第三确定模块,用于在接收外部模块释放的内存地址之后,确定所述内存地址对应的有效地址中存储的数值为空闲位;
第二生成模块,用于生成指针错误标识;
反馈模块,用于将所述指针错误标识反馈至所述外部模块。
进一步的,所述装置,还包括:
检测确定模块,用于在接收外部存储器反馈的有效地址和有效地址中存储的数值之后,检测并确定所述有效地址中存储的数值包括空闲位。
进一步的,所述装置,还包括:
初始化模块,用于在所述接收到内存地址请求指令之前,初始化本地指针空间中所有有效地址中存储的数值。
第三方面,本发明实施例还提供了一种设备,包括:存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的内存地址的管理方法。
第四方面,本发明实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如第一方面所述的内存地址的管理方法。
本发明通过在接收到内存地址请求指令时,查找本地指针空间中的有效地址和有效地址中存储的数值;判断有效地址中存储的数值是否包含空闲位,若包含空闲位,将包含空闲位的数值对应的内存地址作为空闲地址,并根据内存地址请求指令,将空闲地址发送至外部模块,以根据有效地址中存储的数值确定空闲的内存地址,并将空闲的内存地址返回至发送内存地址请求指令的外部模块,采用本发明实施例的技术方案,无需另行设置进程对内存地址的使用进行监控,空闲地址根据有效地址中存储的数值是否有空闲位来实时确定,从而实现动态确定空闲地址,提高对内存地址的管理效率。
附图说明
图1是本发明实施例一提供的一种内存地址的管理方法的流程图;
图2是本发明实施例提供的一种本地指针空间的初始化显示示意图;
图3是本发明实施例一提供的一种空闲地址和本地指针空闲对应关系的显示示意图;
图4是本发明实施例二提供的一种内存地址的管理方法的流程图;
图5是本发明实施例三提供的一种内存地址的管理方法的流程图;
图6是本发明实施例三提供的一种内存地址的管理装置的结构示意图;
图7是本发明实施例提供的一种内存地址的管理方法的流程图;
图8是本发明实施例提供的一种有限状态机的显示示意图;
图9是本发明实施例四提供的一种内存地址的管理装置的结构框图;
图10是本发明实施例五提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在此需要说明的是,本实施例中的所有技术方案都是基于现场可编程门阵列(Field-Programmable Gate Array,FPGA)实现的。为了对内存地址进行管理,将FPGA划分为不同的模块,比如,指针管理模块、外部模块和外部存储器。其中,指针管理模块用于对内存地址进行管理;外部模块用于向指针管理模块获取空闲的内存地址,以采用空闲的内存地址进行数据存储;外部存储器用于生成空闲的内存地址,并发送给指针管理模块,以使指针管理模块对内存地址进行管理。
实施例一
图1是本发明实施例一提供的一种内存地址的管理方法的流程图,本实施例中提供的内存地址的管理方法可以由设备执行,该设备可以通过软件和/或硬件的方式实现,该设备可以是两个或多个物理实体构成,也可以是一个物理实体构成。本实施例中设备可以为FPGA。
参考图1,该内存地址的管理方法具体包括如下步骤:
S101、接收到内存地址请求指令时,查找本地指针空间中的有效地址和有效地址中存储的数值。
其中,有效地址与内存地址一一对应。内存地址请求指令可以理解为请求内存地址的指令信息。在实施例中,当外部模块需要空闲的内存地址进行数据存储时,需向指针管理模块发送内存地址请求指令,以获取空闲的内存地址。当然,在指针管理模块接收到内存地址请求指令时,需按有效地址的递增顺序查找本地指针空间中的有效地址,以及有效地址中存储的数值。其中,本地指针空间为一个固定的地址空间,在该固定的地址空间中包含有效地址和有效地址中存储的数值。其中,有效地址为一个固定地址,从0x0000开始,按递增顺序进行增加至0xffff结束。在此需要说明的是,在每个有效地址中都存储有一个数值,该数值为一个64位的数值,用二进制的数值进行表示,该数值用来表示有效地址对应的内存地址是否为空闲的。当数值中包含一个空闲位,则对应的内存地址是空闲的;反之,当数值中未包含一个空闲位,则对应的内存地址已经被占用。
在实施例中,指针管理模块需对要管理的内存地址进行编码,可以理解为,每个内存地址均是由有效地址和有效地址中存储的数值进行译码而得到的,即每个内存地址对应有效地址中存储的数值中的1bit,在实施例中,采用0和1来表示内存地址的空闲状态,当有效地址中存储的数值中的1bit值为1,表示对应的内存地址为空闲;而当有效地址中存储的数值中的1bit值为0,表示对应的内存地址已经被占用。在对内存地址进行编码后,形成的指针数据存入内存中的固定的地址空间中,该固定的地址空间可称为本地指针空间。在此需要说明的是,有效地址中存储的数值的每一比特可对应一个有效地址,即有效地址中存储的数值的每一比特可对应一个内存地址。
在此需要说明的是,在接收到内存地址请求指令之前,需初始化本地指针空间中所有有效地址中存储的数值。可以理解为,在FPGA所嵌入的设备进行初始化的时刻,将本地指针空间中所有有效地址中存储的数值置1,表示指针管理模块所管理的内存地址均为空闲。图2是本发明实施例提供的一种本地指针空间的初始化显示示意图。参考图2,本地指针空间的有效地址从0x0000开始,按递增顺序依次对有效地址进行增加,直到0xffff为止。同时,每个有效地址中存储的64位数值的每比特均为1,表示指针管理模块所要管理的内存地址均为空闲。
S102、根据内存地址请求指令,发送空闲地址。
其中,空闲地址为包括空闲位的数值对应的内存地址。
示例性地,图3是本发明实施例一提供的一种空闲地址和本地指针空闲对应关系的显示示意图。参考图3,假设指针管理模块所要管理的内存地址分别为0x10002和0x10105,其中,内存地址0x10002对应本地指针空间中的有效地址为0x0000,以及有效地址中存储的数值的第3bit为1,表示有效地址中存储的数值的第3bit为空闲位,即有效地址0x0000对应的内存地址0x10002为空闲的;而内存地址0x10105对应本地指针空间中的有效地址为0x0003,以及有效地址中存储的数值的第6bit为1,表示有效地址中存储的数值的第6bit为空闲位,即有效地址0x0003对应的内存地址0x10105为空闲的。
在实施例中,在指针管理模块按递增顺序从本地指针空间中读取有效地址以及有效地址中存储的数值之后,判断有效地址中存储的数值是否包含空闲位,若数值中有一个比特值为1,则表示该有效地址中存储的数值包含空闲位,该有效地址对应的内存地址输出至发送内存地址请求指令的外部模块。当然,若本地指针空间中的有效地址中存储的64位数值中不存在为1的比特值,相应的,指针管理模块中不存在空闲地址,则指针管理模块发送被占用地址标识至外部模块,以使外部模块得知指针管理模块中没有空闲地址。
本实施例的技术方案,通过在接收到内存地址请求指令时,查找本地指针空间中的有效地址和有效地址中存储的数值;判断有效地址中存储的数值是否包含空闲位,若包含空闲位,将包含空闲位的数值对应的内存地址作为空闲地址,并根据内存地址请求指令,将空闲地址发送至外部模块的技术手段,无需另行设置进程对内存地址的使用进行监控,以根据有效地址中存储的数值是否有空闲位实时确定空闲地址,从而实现动态确定空闲地址,提高内存地址的管理效率。
在上述实施例的基础上,当外部模块完成对内存地址的使用之后,可释放内存地址,以使指针管理模块对外部模块释放的内存地址进行管理。为了对外部模块释放的内存地址进行错误校验,本实施例中的内存地址的管理方法,还包括如下步骤:
S103、接收外部模块释放的内存地址。
在实施例中,在外部模块完成对内存地址的使用之后,外部模块释放内存地址,并发送至指针管理模块。
S104、判断内存地址对应的有效地址中存储的数值是否为非空闲位,若为非空闲位,执行步骤S105;若为空闲位,执行步骤S108。
S105、确定内存地址对应的有效地址中存储的数值为非空闲位。
在实施例中,在指针管理模块接收到外部模块释放的内存地址,指针管理模块根据该内存地址与本地指针空间的对应关系,读取本地指针空间中对应的有效地址中存储的数值,并判断该数值是否为非空闲位,若该数值为非空闲位,表示外部模块所释放的内存地址是正确的。在此需要说明的是,由于外部模块所释放的内存地址为被占用状态,则该内存地址对应的有效地址中存储的数值应该为非空闲位。
S106、将有效地址中存储的数值的非空闲位更新为空闲位。
在实施例中,在确定外部模块所释放的内存地址是正确之后,需该内存地址对应的有效地址中存储的数值的非空闲位更新为空闲位,以表示该内存地址为空闲的。
S107、将更新后的有效地址中存储的数值和有效地址写入本地指针空间。
在实施例中,将更新后的有效地址中存储的数值以及有效地址,再次重新写入本地指针空间中,以便于指针管理模块根据更新后的有效地址中存储的数值确定对应的内存地址为空闲的。同时,对更新后的有效地址中存储的数值和有效地址进行译码,生成对应的内存地址,并将该内存地址作为空闲地址,写入用于存储空闲地址的缓冲区中。
S108、确定内存地址对应的有效地址中存储的数值为空闲位。
在实施例中,在指针管理模块接收到外部模块释放的内存地址,指针管理模块根据该内存地址与本地指针空间的对应关系,读取本地指针空间中对应的有效地址中存储的数值,并判断该数值是否为非空闲位,若该数值为空闲位,表示外部模块重复释放内存地址,则提示释放内存地址错误。
S109、生成指针错误标识。
在实施例中,当外部模块释放的内存地址对应的有效地址中存储的数值为空闲位,表示外部模块重复释放内存地址,则指针管理模块生成指针错误标识。
S110、将指针错误标识反馈至外部模块。
本实施例的技术方案,通过指针管理模块对外部模块释放的内存地址对应的有效地址中存储的数值进行检验,以确定所释放的内存地址是否正确,从而实现了指针管理模块动态确定正确的空闲地址,并将空闲地址写入用于存储空闲地址的缓冲区中,提高了对内存地址的管理效率。
实施例二
图4是本发明实施例二提供的一种内存地址的管理方法的流程图。本实施例是在上述实施例的基础上,对内存地址的管理方法作进一步的具体化。本实施例是应用在从外部存储器中获取空闲的内存地址,并通过指针管理模块对空闲的内存地址进行管理的场景下,参照图4,该内存地址的管理方法具体包括如下步骤:
S210、接收到内存地址请求指令时,查找本地指针空间中的有效地址和有效地址中存储的数值。
其中,有效地址与内存地址一一对应。在实施例中,内存地址请求指令包括:所需空闲地址个数。其中,所需空闲地址个数可以理解为外部模块所需的空闲地址的总个数。
S220、确定有效地址对应的内存地址总个数是否小于所需空闲地址个数。
在实施例中,在指针管理模块接收到外部模块发送的内存地址请求指令时,指针管理模块按有效地址的递增顺序读取有效地址中存储的数值,并且判断有效地址对应的内存地址总个数与外部模块所需空闲地址个数的大小关系。
S230、若内存地址总个数小于所需空闲地址个数,发送内存地址对应的有效地址请求指令至外部存储器。
在此需要说明的是,当指针管理模块中当前所存储的内存地址的总个数小于外部模块所需的空闲地址个数,则指针管理模块向外部存储器发送内存地址对应的有效地址请求指令,以获取有效地址和有效地址中存储的数值。
S240、接收外部存储器反馈的有效地址和有效地址中存储的数值。
在此需要说明的是,指针管理模块中用于存储内存地址的区域为一个缓冲区,可以理解为,该缓冲区的存储空间是有限的。当指针管理模块接收到外部存储器反馈的有效地址和有效地址中存储的数值时,需先判断用于存储内存地址的缓冲区的存储空间是否处于将满状态,若处于将满状态,指针管理模块丢弃外部存储器反馈的有效地址和有效地址中存储的数值;而未达到将满状态,指针管理模块读取外部存储器反馈的有效地址中存储的数值,并对该有效地址中存储的数值进行空闲位检测。
S250、检测并确定有效地址中存储的数值包括空闲位。
在实施例中,为了通过外部存储器所反馈的有效地址和有效地址中存储的地址可生成空闲地址,在接收到外部存储器反馈的有效地址和有效地址中存储的数值之后,对该有效地址中存储的数值进行空闲位检测,即对有效地址中存储的64位数值的每一比特进行检测,确定64位数值中有一比特包括空闲位。
S260、根据有效地址中包括空闲位的数值和有效地址生成对应的内存地址。
在实施例中,指针管理模块对有效地址和有效地址中包括空闲位的数值进行译码,以生成对应的内存地址。同时,将生成的内存地址作为空闲地址,写入用于存储空闲地址的缓冲区中,以便于后续外部模块的使用。
S270、根据内存地址请求指令,发送空闲地址。
其中,空闲地址为包括空闲位的数值对应的内存地址。
在实施例中,根据内存地址请求指令中的所需空闲地址个数将空闲地址发送至外部模块。
本实施例的技术方案,在上述方案的基础上,当指针管理模块中所存储的内存地址总个数小于外部模块所需空闲地址个数时,可通过外部存储器获取有效地址中存储的数值,并对有效地址中存储的数值和有效地址进行译码,生成对应的内存地址,并作为空闲地址,从而实现了从外部存储器动态读取空闲地址,并将空闲地址动态写入用于存储空闲地址的缓冲区中,提高了对内存地址的管理效率。
实施例三
图5是本发明实施例三提供的一种内存地址的管理方法的流程图。本实施例是在上述实施例的基础上,对外部模块所释放的内存地址的管理进行说明。
在此需要说明的是,图6是本发明实施例三提供的一种内存地址的管理装置的结构示意图。其中,该内存地址的管理装置是以数据流的方式对内存地址的管理进行说明。如图6所示,该内存地址的管理装置包括:用户侧接口410、外部存储器物理接口420和指针管理模块430。其中,指针管理模块430包括:存储指针缓冲区4301、缓存归还指针缓冲区4302、缓存指针数据缓冲区4303、缓存地址缓冲区4304和缓存写入指针缓冲区4305。其中,用户侧接口410,记为User_interface;外部存储器物理接口420,记为Mig_app;存储指针缓冲区4301,记为pt_store_fifo,缓存归还指针缓冲区4302,记为pt_fetch_fifo,缓存指针数据缓冲区4303,记为ddr_data_fifo,缓存地址缓冲区4304,记为ddr_addr_fifo;缓存写入指针缓冲区4305,记为Wr_pt_node_fifo。在此需要说明的是,在图6中以英文名称对各个接口和各个缓冲区进行描述。
其中,用户侧接口410,用于接收外部模块的读取指针请求和归还指针请求。其中,读取指针请求可以理解为上述实施例中的内存地址请求指令;归还指针请求可以理解为上述实施例中外部模块释放内存地址的请求指令,以向指针管理模块释放内存地址。其中,实施例中的指针可以理解为内存地址。
外部存储器物理接口420,用于向外部存储器发送有效地址请求指令,以及接收外部存储器反馈的有效地址中存储的数值。
存储指针缓冲区4301,用于存储经过译码的指针。在实施例中,当接收到外部存储器反馈的有效地址和有效地址中存储的数值,将有效地址中存储的数值写入本地指针空间的有效地址中,然后对有效地址和对应的有效地址中存储的数值进行译码,生成对应的内存地址,将内存地址存储至pt_store_fifo中,以便于外部模块进行调用。
缓存归还指针缓冲区4302,用来缓存外部模块归还的指针。其中,指针可以理解为外部模块释放的内存地址。在实施例中,当外部模块完成对内存地址的使用之后,将释放内存地址,并发送至指针管理模块,以使指针管理模块对释放的内存地址进行管理。
缓存指针数据缓冲区4303,用来缓存外部存储器读回的指针数据。其中,指针数据可以理解为有效地址中存储的数值。在实施例中,当外部存储器反馈有效地址和有效地址中存储的数值之后,指针管理模块将有效地址中存储的数值写入ddr_data_fifo中进行缓存,然后对有效地址中存储的数值和有效地址进行译码,生成对应的内存地址,并发送至pt_store_fifo中进行存储。
缓存地址缓冲区4304,用来缓存外部存储器读取命令的地址。其中,读取命令的地址可以理解为判断pt_store_fifo中的内存地址总个数是否小于所需空闲地址个数。在实施例中,当内存地址总个数小于所需空闲地址个数时,向外部存储器发送有效地址请求指令,以获取有效地址中存储的数值。
缓存写入指针缓冲区4305,用来缓存要写入外部存储器的指针。在实施例中,当外部存储器将其自身的本地指针空间中的有效地址中存储的数值发送至指针管理模块之后,外部存储器中对应的内存地址的状态由空闲切换为已经被占用,则指针管理模块需向外部存储器返回刷指针读结果,以使得外部存储器将对应内存地址的状态切换为已经被占用。
其中,在指针管理模块430接收到内存地址请求指令Pointer_rd,Logic2判断pt_store_fifo存储指针缓冲区4301中的内存地址是否为空,若不为空,Logic1将pt_store_fifo存储指针缓冲区4301中的内存地址Rdata返回至外部模块;当指针管理模块430接收到归还指针请求Pointer_wdata,指针管理模块判断pt_fetch_fifo缓存归还指针缓冲区4302是否为空,即如图6所示的!pt_fetch_fifo_empty,若不为空,则从pt_fetch_fifo缓存归还指针缓冲区4302读取一个指针,并通过Logic3计算出该指针对应的物理地址(即,有效地址),然后通过与Logic3相连的cur_state发送至外部存储器进行指针校验;当通过指针管理模块430中的Logic4确定pt_store_fifo存储指针缓冲区4301中的内存地址总个数小于预设值(可为所需空闲地址个数),通过与Logic4连接的cur_state向外部存储器发送有效地址请求指令,同时将要从外部存储器读取命令的地址缓存到ddr_addr_fifo缓存地址缓冲区4304,然后通过Logic6接收外部存储器反馈的有效地址中存储的数值,并将有效地址中存储的数值和有效地址存储至ddr_data_fifo缓存指针数据缓冲区4303,然后通过与Logic5相连的cur_state对有效地址和有效地址中存储的数值进行译码,得到对应的内存地址Wdata,并将内存地址Wdata存储至pt_store_fifo存储指针缓冲区4301中,然后通过Logic5将有效地址在外部存储器中对应的有效地址中存储的数值的比特值发送至外部存储器,同时将写入外部存储器的指针缓存至Wr_pt_node_fifo缓存写入指针缓冲区4305,并发送至外部存储器,以使得外部存储器对对应的有效地址中存储的数值的比特值进行更新,即由1更新为0,以表示已经被占用。
本实施例中,对外部模块所释放的内存地址的管理是在如图6所示的内存地址的管理装置的结构示意图的基础上而实现的。参考图5,该内存地址的管理方法具体包括如下步骤:
S310、将外部模块释放的指针写入缓存归还指针缓冲区中。
S320、指针管理模块判断缓存归还指针缓冲区是否非空,若是非空,则执行步骤S330;反之,则执行步骤S370。
S330、读取缓存归还指针缓冲区中的指针和对应的物理空间。
其中,物理空间可以理解为本地指针空间。在实施例中,读取对应的物理空间,是为了获取归还指针对应的有效地址,以便于获得有效地址中存储的数值。
S340、判断物理空间返回对应的指针校验是否正确,若正确,则执行步骤S350;反之,则执行步骤S360。
在实施例中,根据编码规则计算出归还指针在在外部存储器的本地指针空间中有效地址中存储的数值对应的比特值,若从外部存储器中读取出该比特值为1,则表示重复释放归还指针,释放归还指针错误,执行步骤S560;若读取出该比特值为0,则表示释放归还指针正确,将外部存储器对应的比特值由0更新为1。
S350、将归还指针写入对应的物理空间。
在实施例中,将外部存储器对应的比特值由0更新为1之后,将归还指针写入对应的物理空间中。
S360、丢弃归还指针。
S370、结束。
在上实施例的基础上,图7是本发明实施例提供的一种内存地址的管理方法的流程图,本实施例是在上述实施例的基础上,并基于图6的内存地址的管理装置,对从外部存储器中获取空闲的内存地址进行说明。参考图7,该内存地址的管理方法具体包括如下步骤:
S501、检测存储指针缓冲区中的内存地址总个数。
S502、判断内存地址总个数是否小于所需地址个数,若是,则执行步骤S503;若否,则执行步骤S501。
S503、从外部存储器读取有效地址中存储的数值,并写入缓存指针数据缓冲区。
S504、判断存储指针缓冲区是否处于将满状态,若是,则执行步骤S510;若否,则执行步骤S505。
S505、判断缓存指针数据缓冲区是否为空,若是,则执行步骤S511;若否,则执行步骤S506。
S506、从缓存指针数据缓冲区读取一个有效地址中存储的数值。
S507、判断该数值中是否存在空闲位,若是,则执行步骤S508;若否,则执行步骤S505。
S508、对有效地址中存储的数值和有效地址进行译码,生成对应的内存地址,并写入存储指针缓冲区。
S509、将该有效地址在外部存储器中对应的有效地址中存储的数值置为非空闲。
S510、丢弃外部存储器反馈的有效地址中存储的数值。
S511、结束。
在此需要说明的是,本实施例中的内存地址的管理方法对应的指针管理模块是由有限状态机完成的。图8是本发明实施例提供的一种有限状态机的显示示意图。如图8所示,在设备初始化阶段,指针管理模块处于IDLE空闲状态,然后指针管理模块进入INIT_WR初始化状态,若从外部存储器读取空闲的内存地址,则读取GET_RD外部存储器状态,并将pt_store_fifo存储指针缓冲区中的内部数据个数(可为内存地址总个数)小于预设值(可为所需地址个数)发送至外部存储器,以使外部存储器发送有效地址请求指令,然后GET_WAIT等待外部存储器返回的有效地址中存储的数值,并将有效地址中存储的数值和有效地址转换为对应的内存地址,直至将读取的指针bit(可以理解为将有效地址和有效地址中存储的数值转换为对应的内存地址)转换完成,或者pt_store_fifo存储指针缓冲区处于将满状态,然后通过GET_WR全部更新ddr(可为返回的内存地址)写入完成,或者丢弃所读取的有效地址中存储的数值,以完成对从外部存储器读取的内存地址的管理。
当对外部模块释放的内存地址进行校验时,IDLE向BACK_RD发送缓存归还指针缓冲区pt_fetch_fifo不为空的消息,然后BACK_RD发送给一个读请求(可以理解为有效地址请求指令),使BACK_WAIT等待ddr返回的数据(外部存储器返回的数据),并判断释放的内存地址对应的有效地址中存储的数值中相关比特对应数值是否错误,若没有错误,将该内存地址写入存储指针缓冲区pt_store_fifo中,同时通过BACK_WR将外部存储器中被释放的内存地址对应的内存地址中存储的数值中相关比特由0更新为1的状态,表示对应的内存地址是空闲的。
实施例四
图9是本发明实施例四提供的一种内存地址的管理装置的结构框图。本实施例的内存地址的管理装置可配置于FPGA中,参考图9,该内存地址的管理装置包括:查找模块610和第一发送模块620。
其中,查找模块610,用于接收到内存地址请求指令时,查找本地指针空间中的有效地址和有效地址中存储的数值,该有效地址与内存地址一一对应;
第一发送模块620,用于根据内存地址请求指令,发送空闲地址,该空闲地址为包括空闲位的数值对应的内存地址。
本实施例提供的技术方案,通过在接收到内存地址请求指令时,查找本地指针空间中的有效地址和有效地址中存储的数值;判断有效地址中存储的数值是否包含空闲位,若包含空闲位,将包含空闲位的数值对应的内存地址作为空闲地址,并根据内存地址请求指令,将空闲地址发送至外部模块的技术手段,无需另行设置进程对内存地址的使用进行监控,以根据有效地址中存储的数值是否有空闲位实时确定空闲地址,从而实现动态确定空闲地址,提高内存地址的管理效率。
在上述实施例的基础上,内存地址请求指令包括:所需空闲地址个数。
在上述实施例的基础上,该内存地址的管理装置,还包括:
第一确定模块,用于在查找本地指针空间中的有效地址和有效地址中存储的数值之后,确定有效地址对应的内存地址总个数是否小于所需空闲地址个数;
第二发送模块,用于若内存地址总个数小于所需空闲地址个数,发送内存地址对应的有效地址请求指令至外部存储器;
第一接收模块,用于接收外部存储器反馈的有效地址和有效地址中存储的数值;
第一生成模块,用于根据有效地址中包括空闲位的数值和有效地址生成对应的内存地址。
在上述实施例的基础上,该内存地址的管理装置,还包括:
第二接收模块,用于接收外部模块释放的内存地址;
第二确定模块,用于确定内存地址对应的有效地址中存储的数值为非空闲位;
更新模块,用于将有效地址中存储的数值的非空闲位更新为空闲位;
写入模块,用于将更新后的有效地址中存储的数值和有效地址写入本地指针空间。
在上述实施例的基础上,该内存地址的管理装置还包括:
第三确定模块,用于在接收外部模块释放的内存地址之后,确定内存地址对应的有效地址中存储的数值为空闲位;
第二生成模块,用于生成指针错误标识;
反馈模块,用于将指针错误标识反馈至外部模块。
在上述实施例的基础上,该内存地址的管理装置,还包括:
检测确定模块,用于在接收外部存储器反馈的有效地址和有效地址中存储的数值之后,检测并确定有效地址中存储的数值包括空闲位。
在上述实施例的基础上,该内存地址的管理装置,还包括:
初始化模块,用于在接收到内存地址请求指令之前,初始化本地指针空间中所有有效地址中存储的数值。
上述内存地址的管理装置可执行本发明任意实施例所提供的内存地址的管理方法,具备执行方法相应的功能模块和有益效果。
实施例五
图10是本发明实施例五提供的一种设备的结构示意图。参考图10,该设备包括:处理器710、存储器720、输入装置730以及输出装置740。该设备中处理器710的数量可以是一个或者多个,图10中以一个处理器710为例。该设备中存储器720的数量可以是一个或者多个,图10中以一个存储器720为例。该设备的处理器710、存储器720、输入装置730以及输出装置740可以通过总线或者其他方式连接,图10中以通过总线连接为例。实施例中,该设备为FPGA。
存储器720作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明任意实施例所述的设备对应的程序指令/模块(例如,内存地址的管理装置中的查找模块610和第一发送模块620)。存储器720可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器720可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器720可进一步包括相对于处理器710远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置730可用于接收输入的数字或者字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入,还可以是用于获取图像的摄像头以及获取音频数据的拾音设备。输出装置740可以包括扬声器等音频设备。需要说明的是,输入装置730和输出装置740的具体组成可以根据实际情况设定。
处理器710通过运行存储在存储器720中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的内存地址的管理方法。
上述提供的设备可用于执行上述任意实施例提供的内存地址的管理方法,具备相应的功能和有益效果。
实施例六
本发明实施例六还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种内存地址的管理方法,包括:
接收到内存地址请求指令时,查找本地指针空间中的有效地址和有效地址中存储的数值,该有效地址与内存地址一一对应;
根据内存地址请求指令,发送空闲地址,该空闲地址为包括空闲位的数值对应的内存地址。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的内存地址的管理方法操作,还可以执行本发明任意实施例所提供的内存地址的管理方法中的相关操作,且具备相应的功能和有益效果。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是机器人,个人计算机,服务器,或者网络设备等)执行本发明任意实施例所述的内存地址的管理方法。
值得注意的是,上述内存地址的管理装置中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种内存地址的管理方法,其特征在于,包括:
接收到内存地址请求指令时,查找本地指针空间中的有效地址和有效地址中存储的数值,所述有效地址与内存地址一一对应;
根据所述内存地址请求指令,发送空闲地址,所述空闲地址为包括空闲位的数值对应的内存地址。
2.根据权利要求1所述的内存地址的管理方法,其特征在于,所述内存地址请求指令包括:所需空闲地址个数。
3.根据权利要求2所述的内存地址的管理方法,其特征在于,在所述查找本地指针空间中的有效地址和有效地址中存储的数值之后,还包括:
确定所述有效地址对应的内存地址总个数是否小于所述所需空闲地址个数;
若所述内存地址总个数小于所述所需空闲地址个数,发送内存地址对应的有效地址请求指令至外部存储器;
接收外部存储器反馈的有效地址和有效地址中存储的数值;
根据有效地址中包括空闲位的数值和有效地址生成对应的内存地址。
4.根据权利要求1所述的内存地址的管理方法,其特征在于,还包括:
接收外部模块释放的内存地址;
确定所述内存地址对应的有效地址中存储的数值为非空闲位;
将所述有效地址中存储的数值的非空闲位更新为空闲位;
将更新后的有效地址中存储的数值和有效地址写入本地指针空间。
5.根据权利要求4所述的内存地址的管理方法,其特征在于,在接收外部模块释放的内存地址之后,还包括:
确定所述内存地址对应的有效地址中存储的数值为空闲位;
生成指针错误标识;
将所述指针错误标识反馈至所述外部模块。
6.根据权利要求3所述的内存地址的管理方法,其特征在于,在接收外部存储器反馈的有效地址和有效地址中存储的数值之后,还包括:
检测并确定所述有效地址中存储的数值包括空闲位。
7.根据权利要求1所述的内存地址的管理方法,其特征在于,在所述接收到内存地址请求指令之前,还包括:
初始化本地指针空间中所有有效地址中存储的数值。
8.一种内存地址的管理装置,其特征在于,包括:
查找模块,用于接收到内存地址请求指令时,查找本地指针空间中的有效地址和有效地址中存储的数值,所述有效地址与内存地址一一对应;
第一发送模块,用于根据所述内存地址请求指令,发送空闲地址,所述空闲地址为包括空闲位的数值对应的内存地址。
9.一种设备,其特征在于,包括:存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的内存地址的管理方法。
10.一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-7中任一所述的内存地址的管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811479507.4A CN109582594A (zh) | 2018-12-05 | 2018-12-05 | 一种内存地址的管理方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811479507.4A CN109582594A (zh) | 2018-12-05 | 2018-12-05 | 一种内存地址的管理方法、装置、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109582594A true CN109582594A (zh) | 2019-04-05 |
Family
ID=65927325
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811479507.4A Pending CN109582594A (zh) | 2018-12-05 | 2018-12-05 | 一种内存地址的管理方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109582594A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115794671A (zh) * | 2023-02-07 | 2023-03-14 | 成都申威科技有限责任公司 | 一种兼容向量数据的访存系统及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010018731A1 (en) * | 2000-02-24 | 2001-08-30 | Nec Corporation | Memory management device and memory management method thereof |
CN101916290A (zh) * | 2010-08-18 | 2010-12-15 | 中兴通讯股份有限公司 | 内存数据库的管理方法和装置 |
CN103257929A (zh) * | 2013-04-18 | 2013-08-21 | 中国科学院计算技术研究所 | 一种虚拟机内存映射方法及系统 |
-
2018
- 2018-12-05 CN CN201811479507.4A patent/CN109582594A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010018731A1 (en) * | 2000-02-24 | 2001-08-30 | Nec Corporation | Memory management device and memory management method thereof |
CN101916290A (zh) * | 2010-08-18 | 2010-12-15 | 中兴通讯股份有限公司 | 内存数据库的管理方法和装置 |
CN103257929A (zh) * | 2013-04-18 | 2013-08-21 | 中国科学院计算技术研究所 | 一种虚拟机内存映射方法及系统 |
Non-Patent Citations (1)
Title |
---|
王建德编;施伯乐审: "《国际国内大中学生程序设计竞赛辅导》", 31 March 2000, 南京师范大学出版社 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115794671A (zh) * | 2023-02-07 | 2023-03-14 | 成都申威科技有限责任公司 | 一种兼容向量数据的访存系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10382258B2 (en) | Viral system discovery and installation for distributed networks | |
CN107783727B (zh) | 一种内存设备的访问方法、装置和系统 | |
CN111427859B (zh) | 一种消息处理方法、装置、电子设备及存储介质 | |
CN103888377A (zh) | 报文缓存方法及装置 | |
CN114153754B (zh) | 用于计算集群的数据传输方法、装置及存储介质 | |
JP2019507926A (ja) | モジュールバスとaxiバスの間のリクエストを変換するためのバスブリッジ | |
CN104144123A (zh) | 访问互联网的方法、系统与路由型网关装置 | |
CN113032293A (zh) | 缓存管理器及控制部件 | |
JP2018010680A (ja) | レベル2メモリの一部分とレベル1メモリとにアクセスするシステムおよび方法 | |
CN109582594A (zh) | 一种内存地址的管理方法、装置、设备和存储介质 | |
EP2696289A1 (en) | Information processing device, parallel computer system, and computation processing device control method | |
CN116185935A (zh) | 控制器的fpga原型验证方法、系统、介质及计算设备 | |
US20230367735A1 (en) | Data transmission method, module and apparatus, device, and storage medium | |
WO2013013477A1 (zh) | 数据包处理和溯源方法、装置及系统 | |
CN115357095B (zh) | 异步信号处理方法及结构 | |
JP2002084311A (ja) | パケット転送処理装置 | |
CN110633226A (zh) | 融合存储器、存储系统及深度学习计算方法 | |
CN109246214A (zh) | 一种提示音获取方法、装置、终端及服务器 | |
CN114489943A (zh) | 一种数据访问方法和装置 | |
WO2019214012A1 (zh) | 一种邮件传输方法、服务器及系统 | |
CN116418783B (zh) | 一种id编号动态重分配的方法、计算机设备及介质 | |
KR20090053164A (ko) | 상태 정보를 관리하는 플래시 메모리 제어 장치 및 방법 | |
JP7363344B2 (ja) | メモリ制御装置、および制御方法 | |
CN110061856A (zh) | 一种基于区块链的通信方法、装置及电子设备 | |
KR20200059494A (ko) | 메모리 시스템 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190405 |