SSD在今天越来越流行,业内的很多公司都开始尝试使用,甚至作为主要的存储媒介,从Research的角度讲,SSD更是一个重磅炸弹,因为它颠覆了原有hard disk的一些基本假设,所以,理论上讲,原先基于hard disk的那些理论和实验都可以在SSD重新实现一回(这又能造就多少paper啊 ...)。
这两天有些空闲,找了几篇相关的论文科普了一遍,算是打些基础,希望将来有机会动手尝试。以下就是一些读书笔记,纯粹纸上谈兵。
PS:以下所提及的flash/SSD,都特指NAND flash,也是现在最常见的flash。

关于SSD的硬件原理不是这里讨论的重点(毕竟咱是软件开发人员)。唯一一点我觉着需要提及的是SSD不是hard disk这种机电式的硬件,而是电子芯片(microchip)。所以,使用hard disk最耗时间的seek time在SSD中基本上不存在。这个特性在后面会更详细的讨论。

在传统的计算机存储架构中,分了这样的几个层级:
    CPU cache
    main memory (RAM)
    hard disk
它们的IO性能自上而下递减,当然它们的造价也是自上而下的递减,但是,容量却是自上而下的递增。
在本文中,不考虑CPU cache,从main memory和hard disk 说起。这里挑选最重要的一个性能指标-latency,main memory的latency一般在100ns左右(实际中很多是几十ns),而hard disk读写一次的latency大概是10ms。(这里的100ns和10ms都不是精确数据,只表示大概的数量级,另外,hard disk的latency不考虑disk自带的buffer的影响)。
SSD一般认为是介于main memory与hard disk之间的一种存储介质:
    main memory (RAM)
    flash / SSD
    hard disk
它的latency大概是100us左右(这个值只是一般情况)。和main memory,hard disk比较:
    Disk = 100 * flash;
    flash = 1000 * memory;
    Disk = 100 * flash = 100 * 1000 memory;
所以,对于flash/SSD,一个最直观的概念,它比Disk要快上100倍。 当然,它也同样能够提供persistent storage。

有了这个直观的概念,我们再更详细的比较一下hard disk和SSD的差异:
读: 
随机读:
正如前面所述,hard disk会有一个非常讨厌的seek time,它一般需要几个ms,所以hard disk 的一次随机读被拖累到需要10ms;而SSD的random read的性能非常之棒,在100us左右。因此,在随机读的情况下,SSD要比hard disk快100倍。
顺序读:
顺序读的场景是一次读入连续的数据块,比如连续读1M的数据。这种情况两者的比较就麻烦了。hard disk的一次顺序读只需要消耗一次seek time,因此它的整体latency会大大降低;而对于SSD来说,它的顺序读和随机读是一样的,比如顺序读16K数据就相当于随机读2K*8次,和hard disk相比,优势就小多了。我手里有个数据,flash读取256KB的page,花费3.98ms,而hard disk也只需要12.85ms,差异远不到100倍。

写: 
写当然也包括了随机写和顺序写。对于hard disk来说,它的写行为和读是类似的,所以,hard disk的读和写的latency非常的接近,都是大概10ms+。
至于SSD,它的读和写就有很大差异了。首先,random write的latency要比random read的大一倍,比如random read的latency是100us的话,那么random write的latency就大概是200us了。这主要是由于SSD的硬件特性决定的。当然,虽然latency大了近一倍,但是和hard disk的random write相比,还是快很多的。
其次,顺序写的情况下,SSD也面临着和顺序读一样的问题,即它不会因为顺序的操作方式而获得额外的好处,因为,和hard disk相比,它的优势会缩小;
最后,也是最有意思的一点,over-write(覆盖写) 的情况。对于hard disk而言,覆盖写和普通的写没有区别;但是在SSD中,不存在严格意义的over-write,也就是说,SSD是不允许直接向一块已经写入数据的区域再写入数据。如果要达到over-write的效果,必须首先执行一次erase操作,将数据块的原有数据进行擦除,然后再写入新的数据。而一次erase操作,大概耗时1.5ms。这就完了吗?不,还有更惨的。比如over-write一个2K的数据,但是,一次erase操作所执行的区域(称为erase unit)可能是128K,所以,为了写入这个2K的数据,需要擦除128K的数据,再将这些数据和新的2K数据写回到SSD上。整个过程有可能导致这次write操作比在hard disk上执行还慢。

分析过后,我们可以归纳,SSD在random read的时候比hard disk快两个数量级,在执行顺序读写的时候也会比hard disk好一些,最恐怖的是出现了over-write,这种情况下SSD有可能比hard disk性能还差。

接下来,简单的回答一个有趣的问题:到底应该怎样使用SSD呢?

一种简单的做法,就是将SSD作为hard disk的替代品,抛弃hard disk,完全用SSD作为数据的持久化介质。这样做当然没什么问题,而且,基本上所有的SSD对外的接口都是block device - 和hard disk一样。所以,操作SSD和操作hard disk从操作系统上看来接口没区别。唯一可能要考虑的,就是SSD较高的出错率。这是个麻烦。

另外的更复杂的做法,就是将SSD当成memory和hard disk之间的一种新的介质,三者同时存在。这种情况下,或者将SSD作为memory的一个扩展的buffer pool,或者作为disk之外的一个persistent storage的扩展。应该选哪个呢?

文献【1】给出了答案。整个论证过程比较复杂,就不多说,直接看paper好了。简单来说,不同的系统用法不一样。File System中,文件往往是一块很大的字节流,对于文件的操作往往是将整个文件读入到内存中。一般在disk上要分配多个连续的block以存储一个文件。在这种情况下,更适合将flash当成是memory的扩展。因为当把文件都读入到flash(相当于内存)中进行操作时,一旦系统崩溃,flash中的正在修改的文件能够被写回到disk上。但是,对于Database system,flash更适用于做成disk的扩展。具体原因见paper吧。

Flash Memory/SSD的基础知识相关推荐

  1. 硬件:固态硬盘SSD的基础知识及安装注意事项!

    固态硬盘就是用固态电子存储芯片阵列而制成的硬盘,相对于机械硬盘,固态硬盘的读写速度更快,但是固态硬盘的缺点是寿命不如机械硬盘. 固态硬盘有写入寿命,平均起来约为3000次P/E,1P/E为硬盘存储上限 ...

  2. Nand Flash基础知识与坏块管理机制的研究

    概述 Flash名称的由来,Flash的擦除操作是以block块为单位的,与此相对应的是其他很多存储设备,是以bit位为最小读取/写入的单位,Flash是一次性地擦除整个块:在发送一个擦除命令后,一次 ...

  3. linux挂载fc存储有超级坏块_Nand Flash基础知识与坏块管理机制的研究

    欢迎FPGA工程师加入官方微信技术群 点击蓝字关注我们FPGA之家-中国最好最大的FPGA纯工程师社群 概述 Flash名称的由来,Flash的擦除操作是以block块为单位的,与此相对应的是其他很多 ...

  4. 初中计算机flash操作,初中信息技术FLASH基础知识

    <初中信息技术FLASH基础知识>由会员分享,可在线阅读,更多相关<初中信息技术FLASH基础知识(26页珍藏版)>请在人人文库网上搜索. 1.FLASH 第一课,一.Flas ...

  5. NAND FLASH基础知识总结

    NAND Flash简介 Flash全称为Flash Memory,属于非易失性存储设备(Non-volatile Memory Device).Flash主要分两种,NAND Flash和NOR F ...

  6. 【STM32H7教程】第70章 STM32H7的内部Flash基础知识和HAL库API

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第70章       STM32H7的内部Flash基础知识和 ...

  7. NAND flash 基础知识

    NAND Flash的驱动程序设计http://hong60104.spaces.eepw.com.cn/articles/article/item/89205 1.    硬件特性: [Flash的 ...

  8. 第四章:磁盘和SSD基础知识(提供原稿)

    本文对服务器知识进行了汇总,第四章:磁盘和SSD基础知识. 本系列内容包括9大章节,从服务器的概念.服务器重要部件技术和架构组成,并且对磁盘.RAID知识,网卡等知识做了深度详细介绍.全系列总共145 ...

  9. flash的计算机知识,初中信息技术FLASH基础知识.ppt

    初中信息技术FLASH基础知识.ppt FLASH 第一课 一.Flash简介: Flash是一个优秀的矢量动画软件,它既是二维动画的制作软件,也是多媒体创作的有利工具,特别是涉及使用动画的网络课件中 ...

最新文章

  1. 皮一皮:千万不要把可乐放冷冻...
  2. IDEA+Maven运行调试MapReduce程序
  3. 如何进入python程序代码编辑环境_Python怎么打开代码编辑器 来学习吧
  4. java小编程----最接近的三数之和
  5. Sum of Consecutive Prime Numbers POJ - 2739(线性欧拉筛+尺取法)
  6. 嵌入生活的嵌入式,超市里的电子价签
  7. Leetcode PHP题解--D68 283. Move Zeroes
  8. 【英语学习】【Daily English】U03 Leisure Time L03 Hiking and camping are some of his favorites.
  9. 点云谱聚类实现代码_Spark跑DBSCAN算法,工业级代码长啥样?
  10. 同频切换的事件_LTE前台路测切换问题处理大礼包
  11. java stream 泛型
  12. [LUOGU] P1111 修复公路
  13. Asp.net Ajax Control Toolkit设计编程备忘录(色眼窥观版)——第3回(UE专辑)
  14. 检测浏览器是否支持ajax ===小代码
  15. Linux(ubuntu)下打包 解压
  16. app开发需要哪些技术?4种app制作方法对比
  17. 项目初始化报 404 Not Found - GET https://registry.npmjs.org
  18. IDEA+Java+Servlet+JSP+Mysql实现学生选课签到系统
  19. SpringBoot + Springmvc集成guava
  20. 单项选择标准化考试系统

热门文章

  1. FastDeploy:电表检测模型在安卓设备的部署
  2. 【职业人生】如何有效的在职场当中避免工作失误和提高个人发展
  3. awk 根据分隔符解析文件并取值
  4. python什么是面向对象编程_python面向对象编程
  5. Java开发入门——三大平台的介绍
  6. Mybatis一对多返回结果问题
  7. 不吃药的食疗法系列——发热
  8. 杰瑞服务器虚拟化,能源互联网信息与能源的基础设施一体化.PDF
  9. 我爷爷吸烟,我爸爸也吸烟,轮到我不能断了香火
  10. yolov5显示中文标签