扫描下面的二维码,或者微信搜索ssdfans关注公众号,每天都能看到一篇SSD精彩文章。
SSD技术学习网 (http://www.ssdfans.com)是目前的中文网络上介绍SSD最专业的网站,文章都来自于业内技术人士。本文列出几篇适合SSD爱好者技术入门的文章,帮助SSD的选购、使用和技术开发。
何为SSD? Solid State Disk/Drive,固态硬盘也。现在,想必很多人都知道这东西,并且自觉或者不自觉的在使用着固态硬盘。一台刚买的新机子,如果配有固态硬盘,你看到系统启动只要几秒钟,飞一般的感觉,非常的爽。但你可能认为这是新机,i5+4G/8G内存,速度快是本该如此,SSD在其中起的作用,你可能并没有充分认识到。但是,如果你把你的老机子,硬盘换成固态硬盘,你会惊讶的发现,之前系统启动需要一分多钟,现在只需要十多秒,你会感慨:真的是一分钱一分货呀,SSD真是神奇,让你的机子焕发第二春了。 速度快,可能是用户在使用过程中对SSD最直观的感受。当然,价格高,应该是用户在选购时的第一感受。除此之外,SSD对很多人来说,还是个比较新颖神秘的东西。本文旨在科普SSD。什么是SSD?相比传统硬盘HDD,SSD有什么优劣势呢?本文一一道来。
本文介绍了SSD的一些基本原理,包括SSD底层FLASH阵列的实现,Host Page与Physical Page的映射及映射表,垃圾回收机制,写放大,OP和Wear Leveling等。虽然市面上有各种各样的SSD,但它们内部这些基本的东西都是相通的。理解了这些东西,就等于拥有了一把通向SSD世界的钥匙。
包括AS SSD Benchmark, ATTO Disk Benchmark, CristalDiskMark,PC Mark Vantage,IOMeter的用法和特点。
目前绝大多数SSD都是以NAND FLASH为存储介质的。SSD工作原理很多都是基于NAND FLASH特性的。比如,NAND FLASH在写之前必须先擦除,而不能覆盖写,于是SSD 才需要垃圾回收(Garbage Collection,或者叫 Recycle);NAND FLASH 每个块(Block)擦写次数达到一定值,这个块就不能用了(数据丢失,或者写入不了),所以SSD 固件必须做 Wear Leveling,让数据平均写在所有块上,而不是盯着几个块拼命写(不然没几天SSD就报废了)。
当我们删除一个文件的时候,我们并没有真正删除HDD或者SSD里面的文件数据,它只是把这些数据占用的地址标记为”空”,即可以覆盖写。但这只是在文件系统层面的操作,HDD或者SSD并不知道哪些地址的数据无效,除非HOST重新在这些地址写入新的数据。
Trim,是一个ATA命令,当用户删除一个文件时,操作系统会发TRIM命令给SSD,告诉SSD哪些HOST PAGE对应的数据无效了。一旦SSD知道哪些数据是无效后,在做垃圾回收的时候就可以把这些删除掉的数据抛弃掉,不做无谓的数据搬移。这样不仅增强SSD性能,又延长SSD寿命。
替换和略过两种坏块管理策略,没有谁优谁劣,取决于SSD的软硬件架构。在此提这两种策略,只是给设计者一个 参考。但需要提到的是,替换机制策略有一个致命点,那就是如果某个Die坏了(所有Block不可用,或者可用的很少),那么,整个SSD就废了!因为在那个Die上,找不到好块来替换坏块,用户数据无处可写!
替换策略有短板效应,你也许会说,既然这样,那就采用略过策略吧。但是,对某些SSD控制器来说,它只支持替换策略,比如Sandforce 2000系列的Controller。还是那句话,哪种策略适合你SSD的软件硬件架构,就用哪种吧。
SSD的基础浮栅晶体管发明过程中,还有华裔科学家施敏的贡献!
在我们今天看来,SSD是个新鲜事物,但是从事这个行业的前辈们却已经摸爬滚打了将近38年,从大学一毕业就干到了退休。庆幸的是他们中年轻的人在退休后看到了SSD的繁荣。所有重大的技术革新都是这样,需要长期的技术积累,很多人默默的投入,最终改变我们的生活。从当年的蒸汽机、发电机到后来的集成电路、互联网,以及未来的量子计算机、人工可控核聚变发电,无一不是如此。
早在1976年就出现了第一款使用RAM的SSD,1983年Psion公司的计算器使用了Flash存储卡,1991年SanDisk推出了20MB的Flash SSD。经过了许多人三十多年的努力,SSD终于改变了我们的生活。
很多人可能想不到,互联网巨头百度也自己开发SSD。
在机械硬盘时代,硬盘的制造技术掌握在少数几家大公司手里,用户只能购买。但是进入SSD时代之后,硬盘的制造门槛没有那么高了,简单来说,SSD就是买Flash芯片和控制芯片组装起来就可以了,所以国内很多有技术实力的公司就想自己开发SSD,例如华为、百度等。
荷兰阿姆斯特丹的一个码农Emmanuel Goossaert写了一系列文章,介绍程序员为SSD编程的秘籍。也有中文翻译,本文介绍其中的要点总结。
只要掌握了这29条准则,基本上使用SSD就能驾轻就熟了。例如,SSD里面有缓存和预读等机制,小数据的混合读写会影响这些机制的发挥,导致读写性能下降。所以最好把读集中在一起,写集中在一起。例如要修改1000个文件,不要读一个,写一个,最好是读出1000个文件,再统一改好写下去。