Flash存储技术总结
来源:互联网 发布:linux系统脚本 编辑:程序博客网 时间:2024/05/22 14:15
FLASH地位:三个层次,主存储器、RAM与磁盘间的BUFFER cache层、持久性存储层。
FLASH每个存储单元必须擦除后才可写,且每个存储单元允许的擦除次数有限,
两种管理FLASH存储器的软件体系结构:
1.设置FLASH转换层为FLASH存储器提供设备接口,不需要修改已有文件系统,转换层可以地址映射、垃圾回收、磨损均衡。
2.设计专门的FLASH文件系统。
两大问题:1.写太慢。2.操作系统、文件系统、数据库管理系统等大量上层软件的设计和实现都是基于底层采用磁盘存储系统的假设,大量的数据结构和算法的设计和实现都以优化磁盘系统的性能为目标。如B+树、buffer cache管理策略等,将这些软件直接用于基于Flash的存储系统无疑将无法有效地发挥Flash存储系统的性能,因而
修改或设计新的数据结构和算法以提高Flash存储
系统的性能是另一个需要研究的问题.
Flash分类:AND NAND NOR NINOR。主要是NOR和NAND。两种的存储单元组织为块阵列,最小擦除单元为块,最小读写单元为页,对块擦除相当于所有位变为1,写页时先看页的所有位置是否都为1,不都为1就擦除,
NAND Flash页大小通常为512B,2KB,4KB,一个块有32、64或128个页,每个页包含数据区和外带区。NOR Flash可以以字节为单位访问。
NOR Flash并行连接存储单元,有数据线地址线控制线,快速度,片上执行,写和擦除时间长,且容量低价格高,多用于手机,BIOS等代码的存储。
NAND FLASH串行连接存储单元,读取慢但写和擦除相对较快,容量大价格低,多用于手机,相机等的数据储存。
Flash 与RAM和磁盘的比较的有点:读写延迟低、随机读性能和顺序读一样快、低能耗、高可靠、适应恶劣环境。
Flash地位的研究:1.内存的部分或全部代替。2.磁盘的读CACHE或预写日志。3.持久性存储(windows readyboost)。
覆盖写的效果特别差。
管理Flash存储器的软件体系结构:1.通过Flash转换层提供块设备访问接口(性能无法最优)。2.设计专用Flash文件系统。TrueFFS 、JFFSx、YAFFS、SMXFFS。
已有操作系统和文件系统的基于磁盘的数据结构和算法的面向Flash的重新研究:
1.地址映射:借鉴基于日志的文件系统的原则,将更新数据事先存在擦除过的块中,更新地址映射信息,再把原数据标记为无效。(需要动态映射的支持)
基于页的地址映射:粒度细,灵活,但是所需RAM空间很大。
基于块的:块内数据必须顺序存储,地址映射表只需维护块内第一个页的逻辑地址。替换块策略:为每个需要更新的数据提供日志维护,存储更新的数据,但是多次更新需要多个日志块,所以日志块的空间利用率低。
混合地址映射:根据文件访问局部性特点,频繁更新的数据维护用页地址映射,其他大量数据用块地址映射。其中包括:日志块策略、全相联块转换策略(FAST)、局部性感知的块转换策、超级块策略。
空白:进一步设计具有自适应能力的地址映射机制、针对通用计算环境的FLASH地址映射机制。
2.垃圾回收(性能瓶颈):由于FLASH采用异地更新机制,随系统运行,空闲的快就越来越少,无效数据越来越多,垃圾回收就是擦除无效数据。
首先选一个要回收的块,将里面的有效页复制到空闲块,更新地址映射信息,擦除这个块,并加入空闲列表。涉及到数据的复制以及擦除。
时机:(静态、动态) 动态:根据空闲块数和回收效益设定回收阈值。
选择:与地址映射和日志块管理策略有关。考虑无效页多的块和磨损程度进行擦除。
合并操作:垃圾回收需要将数据块与日志块的有效数据重新组织为块内顺序存储。
交换合并:顺序更新数据中,日志块(更新块)中的数据直接转化为新的数据块,擦除原有数据块即可。代价最小
部分合并:回收时日志里块还没写满,需要把剩下的有效数据复制到日志块,再擦除原来数据。
全合并:不顺序更新数据,数据块和日志块里的有效数据复制到一个块。代价最高,写操作会导致全合并。
所以提高垃圾回收性能应该:提高日志块的空间利用率,降低垃圾回收频率,尽可能交换合并。
3.磨损:
动态磨损均衡:回收垃圾时考虑磨损程度。无效页个数和块年龄之比、擦除最多的块内数据和最少的交换。局限:只在垃圾回收用,无法涉及所有块,且增加垃圾回收成本。
静态磨损均衡:一段时间后冷热数据进行交换。
随机磨损均衡机制:每隔一定数目的擦除操作后随即取一个块置为空闲,开销固定时间分布均匀。
擦除次数的磨损均衡:最大擦除次数与最小的块之差的阈值,超过后进行冷热数据交换,将最大次数的作为空闲快。
前景:随着Flash存储器的容量越来越大,如何减小磨损均衡机制的空间和时间复杂度,降低系统开销是进一步研究的方向.
4.基于Flash的BUFFER CACHE管理策略:
基于页的替换:延迟脏数据的替换。CFLRU:设定LRU端的MRU的X个页面为CF区域,优先替换CF页面,延迟热脏数据替换,调整X来防止命中率降低。
基于块的替换:FAB:对缓冲数据进行LRU排队,某页被访问时移动到LRU头部,优先替换页面最多的块。BPLRU:为SSD的写缓冲区设计的替换算法。
前景:主要思想是减少对Flash存储器的写操作,以及为Flash转换层提供更多交换合并的机会,降低垃圾回收的代价.
5.基于Flash索引数据结构:最终要的B树和B+树不再适用。
增加Flash转换层:增加一个软件BFTL。NATH把B+树结点分为两种模式:磁盘结点模式和日志结点模式。
基于FLASH的文件系统:B+树进行优化。
前景:为基于Flash的大容量、高性能存储系统设计新的索引数据结构是一种值得考虑的解决方案.
基于Flash的事务处理技术:异地更新机制使得Flash转换层已经采用了CoW的原则,扩展Flash转换层以支持事务处理只需引入很少的开销;和磁盘不同,CoW所导致的数
据分片问题在Flash存储器中不存在;由于F1ash存储相对来说较新,提供了制定新的接口规范的可能性。
总结:要研究的问题
一是针对特定的存储应用,尤其是对企业级存储系统,如何设计新的硬件和软件体系结构,以充分利用Flash存储器的特性,达到最优的性能价格比;
二是如何进一步提高Flash存储器的随机写性能,降低Flash存储器的垃圾回收开销,这是使Flash存储器在通用计算环境中得到充分应用需要解决的主要问题之一.
要完善地解决这两个问题,需要采用系统的方法,综合考虑硬件、设备驱动以及上层软件中数据结构与算法的设计与实现.
企业级使用SSD:特别依赖I/O性能的企业。
- Flash存储技术总结
- MySQL 硬件加速:Flash 存储技术
- uClinux平台下的Flash存储技术
- uClinux 平台下的Flash 存储技术
- uClinux 平台下的Flash 存储技术
- NOR flash和NAND flash 等存储技术
- flash总结
- [转]MTD的概念、uClinux平台下的Flash存储技术
- flash存储原理
- 存储(ROM RAM FLASH)
- NAND Flash存储结构
- 嵌入式--Nand Flash存储
- Flash存储W25Q16芯片
- flash存储程序
- 技术分享 - Windows Phone 的数据存储方式总结
- 近期分布式存储技术实践的总结和思考
- 存储技术
- 存储技术
- 终于忙完乱七八糟的,可以静下心写一会儿代码了
- android getContentLength()函数返回为-1的问题
- Android Studio 上如何使用LogCat
- C++二叉树笔试题
- csu 1030: 素数槽
- Flash存储技术总结
- c++内存泄漏
- Linux命令学习总结:last
- 完全自定义Android对话框AlertDialog的实现(系统源码)
- 数据内存管理
- ios中纯手写代码怎么实现控件的自动布局(约束)
- 虚拟主机根目录下的web.config配置常见问题
- 卡片游戏(Throwing cards away I,UVa 10935)
- ExtJS学习心得--第一章ExtJS而引起我工作4年多的感想