SSD驱动
文章平均质量分 85
庾志辉
这个作者很懒,什么都没留下…
展开
-
SSD卡驱动中trim命令的实现原理
有关trim命令的简介 可以看下http://blog.csdn.net/yuzhihui_no1/article/details/46519701这里就大概的说下驱动中对trim命令的实现吧,由于对公司代码的保密性,这里就不沾贴代码了,就大概的说下实现原理;首先是块设备的基本框架:队列 queue和绑定队列的函数先说说一般的块设备框架,原创 2016-05-06 00:00:13 · 2642 阅读 · 0 评论 -
SSD 之ECC校验和纠错
ECC的全称是 Error Checking and Correction or Error correction Coding,是一种用于差错检测和修正的算法。上一节的BBM中我们提到过,NAND闪存在生产和使用中都会产生坏块,BBM就是坏块的管理机制,而要有效管理坏块的首要前提就是有可靠的坏块检测手段。如果操作时序和电路稳定性不存在问题,NAND闪存出错的时候一般不会造成整个Block或Pag转载 2015-06-16 16:02:10 · 8217 阅读 · 0 评论 -
SSD 之BBM坏块管理机制
不管WL算法如何高明,在使用中都会碰到一个头痛的问题,那就是坏块,所以一个SSD必须要有坏块管理机制。何谓坏块?一个闪存块里包含有不稳定的地址,不能保证读/写/擦时数据的准确性。 坏块分出厂坏块和使用过程中出现的坏块,SSD有坏块表来管理坏块。出厂坏块在上面会有标记,所以很容易就能被识别,而使用中出现的坏块就要靠主控的能力了。一般来说,越到闪存生命的后期(P/E数开始接近理论最转载 2015-06-16 16:05:05 · 3262 阅读 · 0 评论 -
SSD 之WA写入放大
WA是闪存及SSD相关的一个极为重要的属性。由于闪存必须先擦除才能再写入的特性,在执行这些操作时,数据都会被移动超过1次。这些重复的操作不单会增加写入的数据量,还会减少闪存的寿命,更吃光闪存的可用带宽而间接影响随机写入性能。WA这个术语在2008年被Intel公司和SiliconSystems公司(于2009 年被西部数据收购)第一次提出并在公开稿件里使用。 举个最简单的例子:当要转载 2015-06-16 16:09:41 · 2616 阅读 · 0 评论 -
SSD 之OP预留空间
SSD上的OP指的是用户不可操作的容量,大小为实际容量减去用户可用容量,OP区域一般被用于优化操作如:WL,GC和坏块映射等。 OP一般分三层(见下图)。第一层容量固定为SSD标称容量的7.37%,这是因为标称容量采用千进制为单位,而NAND颗粒容量单位为1024进制,两者正好相差约7.37%。这部分空间被默认用于作OP。第二层OP是否存在及容量大小取决于厂商设置。第三层OP是用户转载 2015-06-16 16:12:27 · 5287 阅读 · 0 评论 -
SSD 之Trim指令
Trim,其实是一个ATA指令,并无正式中文名称,操作系统发送此指令给SSD主控,以通知它哪些数据占用的地址是‘无效’的。 在讲解Trim的重要性前,先说一点文件系统的相关知识。当我们在操作系统中删除一个文件时,系统并没有真正删掉这个文件的数据,它只是把这些数据占用的地址标记为‘空’,即可以覆盖使用。但这只是在文件系统层面的操作,硬盘本身并不知道那些地址的数据已经‘无效’,除非系统转载 2015-06-16 16:15:24 · 6416 阅读 · 0 评论 -
SSD 之GC垃圾回收机制
在前面向大家讲解FTL时,我们提到了GC的操作,所谓GC就是把一个闪存块里的‘有效’页数据复制到一个‘空白’块里,然后把这个块完全擦除。GC是SSD里的一个非常关键的操作,其效率对性能有决定性影响。闪存块里‘有效’页的数量对GC效率有决定性的影响,因数量越少,需要复制的页就越少, 花费的时间也越少,效率就高了。(GC操作参考下图)请看下图,把X块和Y块里的“有效”页复制到N块里,然后擦转载 2015-06-16 16:17:06 · 6580 阅读 · 0 评论 -
SSD 之FTL转换层
闪存的读写单位为页,而页的大小一般为4KB或8KB,但我们的操作系统读写数据是按HDD的扇区尺寸进行的(512Byte(字节)),更麻烦的是闪存擦除以块作单位,而且未擦除就无法写入,这导致操作系统现在使用的文件系统根本无法管理SSD,需要更换更先进、复杂的文件去解决这个问题,但这样就会加重操作系统的负担。 而为了不加重操作系统的负担,SSD采用软件的方式把闪存的操作虚拟成磁盘的独立转载 2015-06-16 16:18:33 · 3497 阅读 · 0 评论 -
SSD 之WL磨损平衡
闪存寿命是以P/E次数来计算的,而WL就是确保闪存内每个块被写入的次数相等的一种机制。若没有这个机制,SSD内的闪存颗粒就无法在同一时间内挂掉,那对用户来说就是灾难。 会出现这种情况的原因在于,用户在LBA空间里的数据更新速度是不同的,有部分是经常需要更新,而有些却长期不需要变更,因此若没有WL,很显然那些经常被更新的数据所在的闪存寿命会首先被消耗完毕,而不怎么需要变更的数据所在的转载 2015-06-16 16:19:51 · 4775 阅读 · 0 评论 -
SSD 之wl(wear leveling)算法分析
转来一篇关于NAND FLASH均衡算法的文章,加上一点思考和笔记,认为这种思考有助于更深刻的理解,更好的记忆,所以也算半原创了吧,最起码笔记是原创的。有意思的是,帖子提起这个算法并不是因为嵌入式开发的需要,而是企业存储。因为提到硬盘驱动器HDD的速度硬伤,目前估计就SSD一种好的存储介质解决方案吧,而SSD除了暂时价格小高以外,主要有一个寿命短的硬伤。这样的话就不可避免的涉及到映射、磨损均衡、存转载 2015-06-17 11:17:19 · 6872 阅读 · 0 评论 -
linux 文件系统之SSD
固态驱动器当前非常流行,但是嵌入式系统很久以前就开始使用固态驱动器进行存储。您可以看到 flash 系统被用于个人数字助理(PDA)、手机、MP3 播放器、数码相机、USB flash 驱动(UFD),甚至笔记本电脑。很多情况下,商业设备的文件系统可以进行定制并且是专有的,但是它们会遇到以下挑战。基于 Flash 的文件系统形式多种多样。本文将探讨几种只读文件系统,并回顾目前可用的各种读/写文转载 2015-06-17 11:24:58 · 3362 阅读 · 0 评论 -
SSD 之写入放大带来的难题
NAND闪存的写入(P/E循环)次数有限,SLC的量级是1万-10万次,而MLC普遍只有3000-5000次,TLC则更少,因此围绕SSD可靠性的争议和研究就没停止过,随便搜索SSD的资料见的最多的就是讨论SSD可靠性(reliability)的文章。 当然,也有一种说法称即便只有3000次写入寿命,60GB SSD的写入数据寿命也有3000*60GB=180TB,120GB也有3转载 2015-06-16 15:58:53 · 3864 阅读 · 0 评论