轿车信息文娱和长途电子信息处理体系需求从闪存器材中读写海量数据,因而这些器材有必要能长时刻牢靠、无错地保存数据。例如,嵌入到轿车导航体系中的闪存芯片有必要在若干年的频频运用条件下牢靠作业。用户不期望丢掉数据以及很长的发动时刻,或许忍耐很长的数据康复时刻。这些都对操控闪存芯片中数据的文件体系技能提出了十分严厉的要求。
使问题愈加杂乱的是,轿车嵌入式规划有必要使本钱肯定最低。资料清单中一般不能添加办理电源动摇或不受控关断的硬件,而这两种状况中的任何一种都会导致闪存损坏,并导致业务丢掉。因而,闪存文件体系技能不能简略地供给高吞吐量的读/写功用;它还有必要具有自康复功用,并且在发动之后的若干毫秒之内能被彻底拜访。
根据业务的文件体系
处理这些需求的办法之一是选用根据纯业务的模型。例如QNX嵌入式业务文件体系(ETFS)就遵从这种模型,彻底是由业务组成。无论是文件体系的元数据仍是用户数据的每一次写操作都是由一个“原子”业务组成。一个业务要么获得成功,要么就当成什么事也没有发生。
这种办法能够保证文件体系在电源毛病的条件下也能完好无缺,即便电源毛病发生在闪存写入或块删去期间。为防止文件损坏,业务历来不会掩盖现有的“有用”数据。在文件晋级中心的写入操作总是会写入到一个新的未用区域。因而假如这次操作由于突发事端或电源毛病不能完结,现有的数据将坚持不变。从头发动后,文件体系能够从头履行和正确完结写操作,这样就能够从或许损坏传统文件体系的状况中康复过来。
业务文件体系能够经过处理设备中的业务日志来动态树立文件体系的层次结构。这种操作发生在体系发动之时,应规划成只要很少部分的数据需求读取和CRC校验。这样一来,文件体系能够获得高的数据完整性和快速的重启时刻。例如QNX ETFS能够在数十毫秒内康复,而传统的文件体系需求数百毫秒。
图1:这种车载导航体系是要求大容量牢靠闪存文件体系(用于三维映射、动态路由等)的一个实例。
如图2所示,在朴实根据业务的文件体系中,每个业务由头和用户数据组成。业务头被放在闪存阵列的闲暇字节中。例如,一个具有2112字节页的NAND器材能够由64字节的头和2048字节的用户数据组成。业务头标识数据所属的文件以及其逻辑偏移,并包括一个序列号来确认业务的次序。头部还包括CRC和 ECC字段,用于误码检测和纠正。
图2:这张器材图表明晰它相关于纯业务文件体系中物理前言的独立性。
在体系发动时,文件体系扫描这些业务头来快速重构存储器中的文件体系结构。除了保证高的数据完整性和快速的从头发动时刻,一个闪存文件体系还有必要具有能够延伸闪存寿数的特性,然后添加整个嵌入式体系的长时刻牢靠性。这些特性包括读取功用劣化监测、动态和静态损耗平衡以及防止文件碎片的技能。
康复丢掉的比特
在NAND闪存块内的每一次读操作都会使坚持数据位的电荷削弱。因而,在大约10万次读操作后闪存块就会丢掉数据。为了处理这个问题,一个规划完善的文件体系会盯梢读操作,并在块的读次数到达极限之前标记出弱电荷块以便进行改写。文件体系随后履行一次改写操作,该操作将数据拷贝到一个新的闪存块,并擦除该弱块。这种擦除完成了对闪存块的再充电。
文件体系还应该对一切的读写操作履行ECC运算,以便从或许发生的任何单比特过失中康复。可是,虽然ECC关于那些自身丢掉了单个比特的闪存作用很好,可是关于在写操作期间由于电源毛病而导致的许多比特损坏则力不从心。因而,文件体系应该对每个业务履行一次CRC查验,以快速检测出损坏的数据。假如CRC 检测到一个过错,文件 体系就能够运用ECC纠错功用将数据康复到一个新块上,然后标记出弱电荷块以便擦除。
动态和静态损耗平衡
每个闪存块在其失效之前的擦除次数是有限的。在某些器材中,这个数字能够低到10万次擦除。为了处理这个问题,文件体系有必要完成动态损耗平衡,它经过将擦除次数均匀地涣散到设备中来延伸闪存寿数。
差异或许很大:从没有损耗平衡几天就发生毛病的运用景象到运用损耗平衡超越40年的景象。为完成动态损耗平衡,文件体系会盯梢每个块的擦除次数,然后优先运用那些较少运用的块。
一般,闪速存储器包括许多的静态文件,这些文件常常被读取,但不会再写入。这些文件占用的闪存块没有理由被擦除。假如闪存中大部分文件是静态的,剩下部分包括动态数据的块的损耗将戏曲性地加速。关于NAND存储器来说这方面的问题更大,由于NAND每个块的读次数适当有限。
因而,一个规划优异的文件体系应供给静态损耗平衡功用,它将较少运用的静态块中的数据拷贝到过量运用的块中,然后完成块的平衡运用。这种办法能够让过量运用的块歇息,由于它们现在存储的是静态数据,并将运用较少的静态块移动到动态块组中。
尽量削减文件碎片
文件碎片也是闪存器材的一个问题。可是,支撑去碎片技能仅仅处理方案的一部分。由于NAND闪存具有有限的写次数,文件体系有必要尽或许防止碎片发生,以延伸闪存的寿数。
根据日志的文件体系常常受碎片的影响,由于对已有的文件进行改写或写入会发生一个新的业务。为削减许多小业务发生的碎片,QNX ETFS运用写缓冲来将小的写入兼并成大的写入业务。文件体系还能监督每个文件的碎片水平,并对那些现已严峻碎片化的文件进行后台去碎片处理。这种后台活动应该总是能被用户活动占先,以便保证对正在进行去碎片处理的文件进行马上拜访。
正确的组合
彻底或许构建一个能供给高吞吐量、高牢靠性和快速发动时刻的闪存文件体系。经过整合业务级的规划、老练的纠错以及损耗平衡办法,闪存文件体系彻底能够处理当时嵌入式轿车信息文娱设备提出的杂乱要求。