一种多分组定长数据循环存取方法

文档序号:8472902阅读:609来源:国知局
一种多分组定长数据循环存取方法
【技术领域】
[0001] 本发明涉及数字信号处理技术,特别是一种多分组定长数据循环存取方法。
【背景技术】
[0002] 随着数字信号处理技术、电子测量技术、半导体制造技术的不断发展和进步,多信 号融合处理方法逐步被推广应用。这导致了在多信号融合应用系统中,数字存储量越来越 大,存储的数据类型越来越多,在数据处理过程中这些数据需要频繁存取,因此需要对其进 行多分组数据存储管理。本发明针对这一问题,提出了一种多分组定长数据循环存取方法, 既实现了数据存储空间的自动管理,又方便了多分组数据的存取。本发明设计的方法尤其 对于微处理器,算法更容易实现,易于应用。
[0003] 现有的数据循环存储技术仅解决数据存储空间自动管理问题。《用于安全写环形 存储器指针》[【申请号】00809715. 1]发明提供一种在环形存储起中能够安全写指针的方 法。该发明是通过双指针操作存储器,主要应用在环形存储器中。《用于使用图像条和循 环寻址排列进行图像数据处理的方法和装置》[【申请号】03816690. 9]发明提供了一种存 储器管理,提高了图形处理系统内的存储器效率。该发明存储空间的划分和数据存储处理 方式均针对图像数据作出优化。《NANDFLASH存储器自动循环存储的实现方法》[【申请号】 201310353286. 7]发明使用NANDFLASH作为大容量存储器,使用FPGA作为控制与处理系统, 实现数据的循环写入、循环读取、循环擦除和坏道检测等功能。《一种通用高效高可靠的Nor Flash数据存储管理方法》[【申请号】201310352734. 1]将NorFlash分为两个区:存储管理 区和用户数据区将用户数据以文件的形式存储于用户数据区;将文件相关的管理信息存储 于存储管理区。存储
[0004] 现有的数据存取方法,并没有对多分组数据存储进行处理。存储器空间划分也未 针对多分组数据存储进行优化。

【发明内容】

[0005] 1.要解决的技术问题
[0006] 针对现有技术中存在的问题,本发明提供了一种可以实现了存储空间自动管理, 同时实现了分组数据的快速存取的多分组定长数据循环存取方法。
[0007] 2?技术方案
[0008] 本发明的目的通过以下技术方案实现。
[0009] 一种多分组定长数据循环存取方法,步骤包括:
[0010] 1)将存储空间分成三个部分:数据检索区,保留数据检区和数据存储区,所述的 数据检索区和保留数据检索区存储分组记录信息:分组序号i、存储块序号j、数据长度i_ Dep、起始地址i_SAddr和记录数i_Records,所述的数据存储区由存储块组成,所述的存 储块由所有分组存储单元按照分组序号排列而成,所述的分组存储单元占用一个扇区的空 间,当前的分组序号为i,存储块序号为j。
[0011] 2)在确定总分组数Gall、存储器扇区总数量Sall、数据检索区和预留数据检区数量 DFall后,则存储块数量SubMem可以由表达式SubMem=(Sall-DFall)/Gall取整后确定;
[0012] 3)对于存储介质的一个扇区存储空间数量为Sect_Num,一个存储块内的存储空 间数量为Mem_Num,为扇区存储空间数量与分组数之积,即Mem_Num=Sect_Num*Gall;
[0013] 4)在存储数据时使用循环寻址计算,当存储地址跳到最后一个存储块仍未存储结 束时,将自动跳到第一个存储块相对应的分组存储单元,擦除历史数据后,存入数据,同时 将正在使用的数据检索区的数据读出到缓存中,将缓存中对应分组记录信息中将开始地址 变为新的地址,将记录数增加1,数据检索区状态值增加1,然后存入正在使用的数据检索 区;
[0014] 5)在读取数据时,先读取正在使用的数据检索区分组记录信息,获取分组的开始 地址和数据长度,从开始地址读取相应的长度的数据,当读取历史数据时,使用循环寻址计 算历史数据的开始地址,再读取数据。
[0015] 对于存储块j内分组i存储单元内的任一地址PMemAddr[j,i,X]可以通过该单元 的首地址PMemUnit_Addr[j,i]和该地址相对于首地址的地址偏移量为PMU_i_Offset相加 计算获得,即PMemAddr[j,i,x] =PMemUnit_Addr[j,i]+PMU_i_Offset〇
[0016] 对于存储块i分组i在数据检索区内对应分组记录的起始地址可由存储块j中分 组i单元的首地址PMemUnit_Addr[j,i]和相对于首地址的偏移量PMU_i_Offset二者相加 获取,单元的首地址PMemUnit_Addr[j,i]可以通过先计算存储块内的存储空间数量Mem_ Num与(j-1)的乘积,然后加上扇区存储空间偏移量Sect_Num与分组序号的乘积,最后加上 存储块0中分组0单元的首地址PMemUnit_Addr[0,i],即:
[0017] PMemUnit_Addr[j,i] =PMemUnit_Addr[0,0]+Sect_Num*(i)+Mem_Num*(j)。
[0018] 存储块0中分组i单元的首地址PMemUnit_Addr[0,i]存在表达式:PMemUnit_ 八(1(11'[0,;[]=?]^1111111;[1:_八(1(11'[0,0]+36。1:_池111*(;〇。即?]^1111111;[1:_八(1(11'[」,;[]=?]^1111111;[1:_ Addr[0,0]+Sect_Num*(i)+Mem_Num*(j)。
[0019] 若分组i的数据长度为i_D印,若该分组存储数据一次,存储地址相当于向后移动 i_D印,起始地址偏移量加上i_D印;若读取前一组历史数据,存储地址相当于向前移动i_ D印,起始地址偏移量减去i_D印。
[0020] 若地址偏移量非负,把地址偏移量与扇区单元容量相除取其余数;若对其商取整 之后结果大于0,则存储块序号j加1后对存储块数量取模运算后,保存为j;若地址偏移 量小于0,则地址偏移量加上扇区单元容量,存储块序号j减1,若j小于0则加上存储块数 量SubMem,保存为j,则存储块j分组i的起始地址i_SAddr可由式i_SAddr=PMemUnit_ Addr[j,i]+PMU_i_Offset计算。
[0021] 任一个分组存取的数据长度固定,任意两个分组的数据长度没有关联。
[0022] 3.有益效果
[0023] 相比于现有技术,本发明的优点在于:实现了存储空间自动管理,同时实现了分组 数据的快速存取。
【附图说明】
[0024] 图1为存储空间划分示意图。
[0025] 图2为循环存取示意图。
[0026] 图3为循环寻址计算流程图。
[0027] 图4为存取数据算法流程图。
【具体实施方式】
[0028] 下面结合说明书附图和具体的实施例,对本发明作详细描述。
[0029] 一种多分组定长数据循环存取方法,步骤包括:
[0030] 1)将存储空间分成三个部分:数据检索区,保留数据检区和数据存储区,所述的 数据检索区和保留数据检索区存储分组记录信息:分组序号i、存储块序号j、数据长度i_ Dep、起始地址i_SAddr和记录数i_Records,所述的数据存储区由存储块组成,所述的存 储块由所有分组存储单元按照分组序号排列而成,所述的分组存储单元占用一个扇区的空 间,当前的分组序号为i,存储块序号为j。
[0031] 2)在确定总分组数Gall、存储器扇区总数量Sall、数据检索区和预留数据检区数量 DFall后,则存储块数量SubMem可以由表达式SubMem=(Sall-DFall)/Gall取整后确定;
[0032] 3)对于存储介质的一个扇区存储空间数量为Sect_Num,一个存储块内的存储空 间数量为Mem_Num,为扇区存储空间数量与分组数之积,即Mem_Num=Sect_Num*Gall;
[0033] 4)在存储数据时使用循环寻址计算,当存储地址跳到最后一个存储块仍未存储结 束时,将自动跳到第一个存储块相对应的分组存储单元,擦除历史数据后,存入数据,同时 将正在使用的数据检索区的数据读出到缓存中,将缓存中对应分组记录信息中将开始地址 变为新的地址,将记录数增加1,数据检索区状态值增加1,然后存入正在使用的数据检索 区;
[0034] 5)在读取数据时,先读取正在使用的数据检索区分组记录信息,获取分组的开始 地址和数据长度,从开始地址读取相应的长度的数据,当读取历史数据时,使用循环寻址计 算历史数据的开始地址,再读取数据。
[0035] 对于存储块j内分组i存储单元内的任一地址PMemAddr[j,i,X]可以通过该单元 的首地址PMemUnit_Addr[j,i]和该地址相对于首地址的地址偏移量为PMU_i_Offset相加 计算获得,即PMemAddr[j,i,x] =PMemUnit_Addr[j,i]+PMU_i_Offset〇
[0036] 对于存储块i分组i在数据检索区内对应分组记录的起始地址可由存储块j中分 组i单元的首地址PMemUnit_Addr[j,i]和相对于首地址的偏移量PMU_i_Offset二者相加 获取,单元的首地址PMemUnit_Addr[j,i]可以通过先计算存储块内的存储空间数量Mem_ Num与(j-1)的乘积,然后加上扇区存储空间偏移量Sect_Num与分组序号的乘积,最后加上 存储块0中分组0单元的首地址PMemUnit_Addr[0,i],即:
[0037] PMemUnit_Addr[j,i] =PMemUnit_Addr[0,0]+Sect_Num*(i)+Mem_Num*(j)。
[0038] 存储块0中分组i单元的首地址PMemUnit_Addr[0,i]存在表达式:PMemUnit_ 八(1(11'[0,;[]=?]^1111111;[1:
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1