为满足客户对非易失数据存储的要求,设计师通常会使用一个串行EEPROM。这些EEPROM器件体积很小、价格便宜、而且在市场上已经被长期使用,设计工程师使用这些器件非常便利。但是在当今对成本非常敏感的市场领域,增加一个并不昂贵的EEPROM可能会使设计超出预算。
很多处理器使用闪存存储程序代码,使用静态RAM存储数据信息。尽管充分利用闪存未使用的部分作为非易失数据存储很有吸引力,但是传统的哈佛架构制约了这种应用。MAXQ架构属于哈佛架构,具有独立的代码和数据总线。但MAXQ器件包含的硬件部分可以实现伪冯诺依曼架构,如同访问数据空间一样访问代码空间。这种额外的多功能性,结合MAXQ的效用函数,可实现存储器的擦写服务,为完整的可读写非易失存储子系统提供了解决方案。
关于闪存的基本考虑
闪存是一种电子可擦除存储。通常也被认为是“主读”。简言之,尽管闪存是可写的,但数据更新并不会很频繁,多数的 *** 作都是读 *** 作。多数闪存器件从字面意思来讲都是可写的,但每次只能整块擦除。这使得那些存储器件通常都不适合用于易变存储,只适合用作从不改变内容的固定数据存储。
有两种类型的闪存:NAND闪存和NOR闪存。NAND闪存用在存储卡和U盘中。通常,由于数据按时钟串行传输,从NAND器件中读数据需要数个周期。这种有序的 *** 作使NAND闪存不适合用作程序代码存储,因为读取时间会太长。相反,NOR闪存类似传统字节宽度或字宽度存储。读取NOR闪存就像读取ROM器件:先发器件选择和地址命令,在等待足够的存取时间之后,从总线上读取数据。NOR闪存用于MAXQ处理器中。
MAXQ处理器的闪存
MAXQ处理器中使用的闪存单元被擦除时会变成“1”状态。因此,在擦除后,存储单元中的每个位置都将包含0xFFFF。对某一存储位置进行编程会把某些位从“1”变成“0”状态。为了使被编程过的位重新变回“1”状态,整个单元必须被擦除。
任何电擦除的存储器件必须面临的问题是持久性。根据特定的技术,一个闪存单元在完全失效之前,可以忍耐的擦除次数少达1,000次,多达1,000,000次。因此,使用闪存做数据存储的任何应用都必须保证写 *** 作循环在整个阵列中均匀分布,不允许某一个位置的擦除编程次数比其他位置多很多。
多数闪存器件都允许把之前已经编程过的位置中的没有编程过的位从“1”变成“0”状态。例如,对于多数器件,允许对某个位置编程,把数据从0xFFFE变为0x7FFE,在这个编程过程中,没有任一个位从“0”变成“1”。然而,MAXQ系列器件中使用的闪存,不允许对已经编程过的位置再编程,即使没有发生从“0”到“1”的变化。这样的写 *** 作会失败,保持数据在0xFFFE状态。
MAXQ器件编程受限制的理由如下。正在被编程的存储单元起初是作为代码空间的,所以必须很谨慎,禁止对已写过的位置的任何写 *** 作。0xFFFF指令指一条无效的源代码,它不太可能出现在有效的代码单元内。因此,阻止对已编程过的位置的写 *** 作能够帮助保持代码单元的完整性。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)