充分利用MAXQ®处理器的非易失存储服务
方案2
问题:非易失存储用来跟踪用电量和其它会经常改变的数据。更新的频率从一周数次到一天数次。电表是一个很好的应用举例。
解决方案:在这种情况下即时传统的EEPROM也需要另求帮助。问题在于:频繁的更新、和可擦除存储技术固有的有限电擦除寿命,排除了使用单个EEPROM频繁写擦除操作的可能性。假如这种应用需要每小时更新一次。具有10,000次写擦除次数限制的EEPROM只能工作一年,远远低于电表应用所需的10年寿命设计目标。
这个问题的解决方案是实现“损耗平衡”。也就是指不对单一位置重复写操作。相反,在整个存储阵列中执行均匀分布的写操作。
正是基于此目的,损耗平衡技术被接受,并在闪存存储设备中使用。它的算法非常复杂难以理解。但对于我们,介绍简单的机理就足够了。
在这种设计中,存储阵列中的数据条目并不是以地址作参考,而是以数据元编号为参考。数据元编号是一个和数据元素一一对应的任意8位数值。所以在这个方案中最大可以有255个数据元(数据元0预留)。每个数据元包含:包括数据元编号和数据元长度的双字节报头(图1);指示1、2、3或者4个16位字的两位码,以保留足够的剩余空间进行错误管理。
图1. 数据单元报头结构
写数据单元时,写子程序必须知道要写的数据、数据单元的长度和数据要写的位置。很容易可以知道数据写在哪个地址;无论是新数据单元还是更新已有的数据单元,都会写在存储阵列的末尾。写命令会搜索阵列的末尾,紧接着在最后一个记录后写入新的数据单元。假如在当前的存储页面没有足够的空间保存特定长度的数据元,就会出现页面结束标志并打开一个新页面。图2是这种典型的数据页面的结构。
在这个数据页面中,先写数据单元1,并更新。接着写数据单元4,但从不更新。随后是数据单元3,共更新7次。最后写入数据单元2,从不更新。
页面结束标志的出现表明曾执行写操作,但数据单元太长不能填入当前页面。会打开一个新页面以填写数据单元。在整个数据结构的末尾会分配一个空单元,这里本该是一个数据单元的报头。
图2. 典型的数据页面
要注意这种方案并没有涉及重复记录的问题。因为重复记录不会有问题。事实上,读和写程序都会完全忽略重复记录。写操作时,不管同样编号的记录是否存在,新记录都会写在阵列的末尾。当读操作时,只有符合请求记录编号的最后一个(所以是最近的)记录可以读到。
从阵列中读取数据元会比写操作更复杂。读功能会收到数据元编号和数据元应该写入的地址。当执行此命令时,读操作会从阵列的最开始进行搜索。当它找到一个记录符合被请求的数据元,它会保存这个地址并继续搜索。当它找到另外一个匹配的记录时,读命令会用新地址替代已保存的地址。当搜索到阵列的末尾时,保存的地址就会是符合请求记录的最近写入的记录。当执行读操作时,就会把这个数据复制到缓存中。
尽管所介绍的用来从存储阵列中保存和读取记录的主读机制是可行的,还会存在一个问题:没有机制可以重新使用被过时的记录占用的空间(也没有机制可以删除记录。但由于这种方案是针对嵌入式应用开发的,所以可能不会是个很严重的问题。)。如果不重新恢复一些空间,这些之前被分配的空间会很快用尽。由于闪存只能每次擦除一整个页面,恢复空间意味着擦除整个页面。另外一个更严重的问题是闪存页面不能被随便擦除,会存在删除有用信息的风险。唯一的可选方案是在删除整个旧页面之前,把有用信息复制到一个新页面。
从废旧的记录中恢复空间有三个步骤。第一,打开新页面,把每个数据元的最近版本复制到新页面中。第二,擦除旧页面。第三,对新页面做页面标示,是读命令可以找到新页面。
第一个步骤比较复杂,需要更详细的检查。完成这个步骤最简单的方法可以分成两个子步骤:第一,使用一个RAM保存记录编号和阵列中最近记录的地址;第二,从RAM阵列逐一复制最近记录到新闪存页面。这个过程最快,并且相对简单。
使用这两个子步骤存在的问题是MAXQ2000只有1k字的RAM空间。上述方案限制了可以保存到RAM中作缓存的数据量。这明显是不能接受的。
这种难题的解决方案非常耗时,但不管存储阵列变得多大(合理范围内)都是可行的。为源阵列中的每一项条目单独操作,而不是在RAM中建立指针。因此,算法可以简化为:
- 从源阵列读取一个数据元。
- 在目标阵列中搜索这个数据单元。假如找到了,就说明这个数据单元已经写入。源指针增加并返回步骤1。
- 在源阵列中搜索这个数据单元最近记录。
- 把这个数据单元的最近记录写入目标阵列中。
- 源指针增加并返回步骤1。
最后,在目标阵列中,每
存储 服务 易失 处理器 利用 MAXQ® 充分 相关文章:
- dsPIC33F系列DSC的 SD存储卡接口设计(01-05)
- 基于闪烁存储器的TMS320VC5409 DSP并行引导装载方法(05-23)
- DSP外部Flash存储器在线编程的软硬件设计(07-10)
- DSP片外高速海量SDRAM存储系统设计(01-18)
- 一种新型的多DSP红外实时图像处理系统设计(02-03)
- 浅谈Win CE应用程序的可移植性(03-02)