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

文档序号:8472902阅读:来源:国知局
_八(1(11'[0,0]+36。1:_池111*(;〇。即?]^1111111;[1:_八(1(11'[」,;[]=?]^1111111;[1:_ Addr[0,0]+Sect_Num*(i)+Mem_Num*(j)。
[0039] 保存分组i的数据信息,步骤如下:首先按顺序读取数据检索区的数据检索区状 态值,若读取的状态值小于指定值,则该数据检索区为可用数据检索区;否则按照存储器物
[0040] 理顺序继续读取下一个数据检索区的数据检索区状态值,直到找到可用数据检索 区。
[0041] 从正在使用的数据检索区中读取分组i的分组纪录。从分组纪录数据中,提取存 储块序号j,开始地址:LSAddr,分组i的数据长度i_Dep和记录数i_Records。
[0042] 把开始地址分解成存储块j分组i存储单元的首地址PMemUnit_Addr[j,i]和相 对于首地址PMemUnit_Addr[j,i]的地址偏移量为PMU_i_Offset。
[0043] 把地址偏移量为PMU_i_Offset加上数据长度i_Dep,除以扇区存储空间地址移 量Sect_Num,对其结果取整与存储块j的值相加后对存储块数量SubMem取余数,然后通过
[0013]中所述公式计算新的首地址PMemUnit_Addr[j,i]。lPMU_i_Offset取其余数。根 据公式PMemAddr[j,i,X]=PMemUnit_Addr[j,i]+PMU_i_Offset计算新的地址。
[0044] 在上述计算过程中若首地址发生变化,需要擦除新的存储块j分组i的存储空间 的所有数据。
[0045] 将要保存的数据写入对应存储空间。
[0046] 读取数据检索区的数据到缓存空间中,修改分组i对应的分组记录信息中的存储 块序号和起始地址,记录数值加1,数据检索区状态值加1。
[0047] 如果数据检索区状态值大于指定值,则启用新的预留数据检索区空间作为可用数 据检索区。擦除可用数据检索区的存储空间,然后把缓存中的数据写入该数据检索区,完成 数据存储操作。
[0048] 读取分组i的第N条历史数据信息,步骤如下:首先按顺序读取数据检索区的数据 检索区状态值,若读取的状态值小于指定值,则该数据检索区为可用数据检索区;否则按照 存储器物理顺序继续读取下一个数据检索区的数据检索区状态值,直到找到可用数据检索 区。
[0049] 从正在使用的数据检索区中读取分组i的分组纪录。从分组纪录数据中,提取存 储块序号j,开始地址:LSAddr,分组i的数据长度i_Dep和记录数i_Records。
[0050] 把开始地址分解成存储块j分组i存储单元的首地址PMemUnit_Addr[j,i]和相 对于首地址PMemUnit_Addr[j,i]的地址偏移量为PMU_i_Offset。
[0051] 把地址偏移量为PMU_i_Offset减去数据长度i_D印*N,若结果为负则加上Sect_ Num*M,使PMU_i_Offset非负,且小于Sect_Num,M取最小整数值;否则M取值为0。存储 块序号j的值减去M值后,若j为负值则加上SubMem值,确保j值非负且小于存储块数 量SubMem。然后通过[0013]中所述公式计算新的首地址PMemUnit_Addr[j,i],根据公式 PMemAddr[j,i,X]=PMemUnit_Addr[j,i]+PMU_i_Offset计算新的地址。
[0052] 寻址新地址,读取分组i的数据信息。
[0053] 实施例1
[0054] 本发明采用4MBFlash存储器W25Q32作为存储介质,存储器地址从OOOOOOh到 3FFFFFh,每个扇区4KB,共有1024个扇区。设第一个扇区为地址检索区,预留数据检索区 为第2个扇区到第4个扇区,共三个扇区。数据检索区中的数据检索区状态字用4个字节, 分组号用1个字节,存储块序号用2个字节,数据长度1个字节,开始地址用4个字节,记 录数用四个字节。除去数据检索区和预留数据检索区的扇区,共有1020个扇区用于数据存 储。设数据分组数N= 4,则存储块M= (1024-1-3)/4 = 255。存储块按照物理顺序依次 排列。分组i首先存储在存储块1中的分组i存储空间,当存储满后擦除存储块2中分组i 的存储空间并进行存储。依次论推,直到存满最后一个存储块。当存满最后一个存储块分 组i的存储空间后,再存储数据,将擦除存储块1中分组i的存储空间并进行存储。存储空 间示意图如图1所示,循环存储示意图如图2所示。
[0055] 使用本系统进行数据存取操作,除了需要宏定义表示分组数、扇区偏移量、存储区 扇区总数、存储区开始地址、数据检索区开始地址等常数之外,还需要两个函数:Circaddr 和WRDat。自定义结构体数据类型表达:数据检索区状态值、分组序号、存储块序号、起始地 址、记录数。结构体表达如下:
[0056]
【主权项】
1. 一种多分组定长数据循环存取方法,其特征在于步骤包括: 1) 将存储空间分成三个部分:数据检索区,保留数据检区和数据存储区,所述的数据 检索区和保留数据检索区存储分组记录信息:分组序号i、存储块序号j、数据长度i_Dep、 起始地址:LSAddr和记录数i_Records,所述的数据存储区由存储块组成,所述的存储块由 所有分组存储单元按照分组序号排列而成,所述的分组存储单元占用一个扇区的空间,当 前的分组序号为i,存储块序号为j。 2) 在确定总分组数Gall、存储器扇区总数量Sall、数据检索区和预留数据检区数量DFall 后,则存储块数量SubMem可以由表达式SubMem= (Sall-DFall)/Gall取整后确定; 3) 对于存储介质的一个扇区存储空间数量为Sect_Num,一个存储块内的存储空间数 量为Mem_Num,为扇区存储空间数量与分组数之积,即Mem_Num=Sect_Num*Gall; 4) 在存储数据时使用循环寻址计算,当存储地址跳到最后一个存储块仍未存储结束 时,将自动跳到第一个存储块相对应的分组存储单元,擦除历史数据后,存入数据,同时将 正在使用的数据检索区的数据读出到缓存中,将缓存中对应分组记录信息中将开始地址变 为新的地址,将记录数增加1,数据检索区状态值增加1,然后存入正在使用的数据检索区; 5) 在读取数据时,先读取正在使用的数据检索区分组记录信息,获取分组的开始地址 和数据长度,从开始地址读取相应的长度的数据,当读取历史数据时,使用循环寻址计算历 史数据的开始地址,再读取数据。
2. 根据权利要求1所述的一种多分组定长数据循环存取方法,其特征在于: 对于存储块j内分组i存储单元内的任一地址PMemAddr[j,i,X]可以通过该单元的首 地址PMemUnit_Addr[j,i]和该地址相对于首地址的地址偏移量为PMU_i_Offset相加计算 获得,即PMemAddr[j,i,X]=PMemUnit_Addr[j,i]+PMU_i_Offset。 对于存储块i分组i在数据检索区内对应分组记录的起始地址可由存储块j中分组i单元的首地址PMemUnit_Addr[j,i]和相对于首地址的偏移量PMU_i_Offset二者相加获 取,单元的首地址PMemUnit_Addr[j,i]可以通过先计算存储块内的存储空间数量Mem_Num 与(j_l)的乘积,然后加上扇区存储空间偏移量Sect_Num与分组序号的乘积,最后加上存 储块O中分组O单元的首地址PMemUnit_Addr[0,i],即: PMemUnit_Addr[j,i] =PMemUnit_Addr[0,0]+Sect_Num*(i)+Mem_Num*(j)。 存储块O中分组i单元的首地址PMemUnit_Addr[0,i]存在表达式:PMemUnit_Addr[0, :1]=?]^1111111;[1:_八(1(11'[0,0]+36。1:_池111*(;〇。即?]^1111111;[1:_八(1(11'[」,;[]=?]^1111111;[1:_八(1(11'[0, 0] +Sect_Num* (i) +Mem_Num* (j) 〇 若分组i的数据长度为i_Dep,若该分组存储数据一次,存储地址相当于向后移动i_D印,起始地址偏移量加上i_D印;若读取前一组历史数据,存储地址相当于向前移动i_ D印,起始地址偏移量减去i_D印。 若地址偏移量非负,把地址偏移量与扇区单元容量相除取其余数;若对其商取整之后 结果大于〇,则存储块序号j加1后对存储块数量取模运算后,保存为j;若地址偏移量小 于0,则地址偏移量加上扇区单元容量,存储块序号j减1,若j小于0则加上存储块数量 SubMem,保存为j,则存储块j分组i的起始地址i_SAddr可由式i_SAddr=PMemUnit_ Addr[j,i]+PMU_i_Offset计算。
3. 根据权利要求I所述的一种多分组定长数据循环存取方法,其特征在于任一个分组
【专利摘要】本发明公开了一种多分组定长数据循环存取方法。把存储媒体分成三个部分:数据索引区、预留数据检索区和数据存储区。在数据索引区保存每个分组记录的分组序号、存储块序号、固定数据长度、开始地址和记录数。当数据检索区的记录达到阀值后,启动预留数据检索区,替代数据索引区。在数据存储区内,按照扇区顺序对应分组序号依次保存各分组的数据。当某分组数据存满存储块内对应的存储空间后,获取下一个存储块内新的存储地址存储数据。当数据存满最后一个存储块后,通过寻址计算,新的存储地址位于第一个存储块相对应的存储空间,先将原有数据擦除后,继续保存新数据。在读取数据时,根据开始地址可逐个字节寻址,读取当前数据信息。
【IPC分类】G06F12-06
【公开号】CN104794065
【申请号】CN201510222709
【发明人】胡圣尧, 关静, 杨子立, 张兵
【申请人】常州工学院
【公开日】2015年7月22日
【申请日】2015年5月4日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1