`

一些flash memory/SSD的基础知识

阅读更多

本文出自:http://blog.csdn.net/historyasamirror/archive/2011/05/12/6416002.aspx

在前东家的时候,一直很想去尝试一下flash/SSD,可惜由于各种原因到今天也没有实现。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吧。

【1】The five-minute rule twenty years later,and how flash memory changes the rules

 

分享到:
评论

相关推荐

    ACTEL\实验例程\基础实验\Flash Memory实验

    Flash Memory的基础知识包括以下几个关键点: 1. **非易失性**:与RAM不同,Flash Memory在断电后仍能保持存储的数据,这是其作为长期数据存储的理想选择。 2. **结构**:Flash Memory由许多浮栅晶体管组成,每个...

    SSD1963.zip_SSD1963 FSMC_SSD1963驱动7寸TFT屏源码_ssd1963_ssd1963 51_ss

    下面我们将详细探讨SSD1963、FSMC以及STM32F103CET6的相关知识。 **SSD1963驱动芯片** SSD1963是来自 Solomon Systech 的高性能LCD控制器/驱动器,适用于中小尺寸的TFT LCD面板。它具有丰富的功能,包括24位真彩色...

    Flash memory

    根据给定文件信息,我们可以提取和生成关于NAND闪存技术的知识点,如下: ...由于文档内容中存在OCR扫描技术的识别错误,以上知识点的提取和总结以理解文档所传达的核心信息为基础,尽量保持内容的完整性和准确性。

    Nonvolatile Memory Technologies with Emphasis on Flash

    ### 非易失性内存技术重点介绍闪存 #### 一、非易失性内存技术概览 ...通过学习本书,不仅可以了解到非易失性内存的基础知识和发展历程,还能掌握最新的研究成果和技术趋势,为未来的工作和研究打下坚实的基础。

    ssd7全套答案

    1. **固态硬盘的基础知识**:了解SSD的基本构成,包括控制器、闪存颗粒、缓存以及接口类型(如SATA、PCIe、M.2等)。 2. **存储技术**:理解NAND闪存的工作机制,包括页和块的概念,以及擦写周期和寿命问题。 3. *...

    ssd6 exercise6

    综上所述,SSD6 Exercise6的学习内容涵盖了固态存储的基础知识,包括闪存类型、控制器功能、性能指标、寿命管理和接口协议等。通过深入理解和实践,学生们将能更好地理解SSD技术,提高他们在相关领域的专业素养。

    ssd1答案及复习资料

    SSD1,全称为Solid State Drives 101,可能是某个课程或教程的缩写,专注于固态硬盘(SSD)的基础知识。这个压缩包包含的资源是卡耐基大学教学材料的一部分,用于帮助学生深入理解固态存储技术。让我们深入探讨固态...

    ssd7 exercise1 高分答案

    1. **SSD基础知识**:固态硬盘是由闪存颗粒(Flash Memory)组成的,其内部结构包括控制器、NAND闪存芯片和缓存等组件。控制器负责管理和优化数据读写,NAND闪存是数据存储的主要介质,而缓存则提高了数据传输速度。...

    SSD1 multi-choice、quiz、exam答案

    SSD1,全称为Solid State Drive 1,通常是指固态硬盘的基础知识或者某一课程的简称,特别是与存储技术和计算机硬件相关的教育内容。这个压缩包文件包含的是关于SSD1的多选题、小测验和考试的答案,适用于学习者进行...

    卡耐基网上教程 SSD3 答案 全

    1. 存储技术基础:讲解闪存(Flash Memory)的工作原理,包括EPROM、EEPROM、NOR Flash和NAND Flash等不同类型的闪存芯片。 2. SSD架构:介绍SSD的控制器、DRAM缓存、主控芯片以及接口(如SATA、PCIe、M.2等)的...

    ssd4 Exercise 4A

    在这个练习中,我们可以预见到一系列关于SSD基础、I/O操作、存储层次结构、垃圾回收、损耗平衡等关键知识点。 首先,我们需要了解固态硬盘(SSD)的基本结构。不同于传统的机械硬盘(HDD),SSD没有活动部件,而是...

    SSD8 Practical Quiz 1

    SSD8 PQ(Practical Quiz)可能涵盖固态存储系统的基础知识、工作原理、性能评估、故障排查等多个方面。 在固态硬盘(SSD)的学习中,以下几个关键知识点至关重要: 1. **固态硬盘的工作原理**:SSD不同于传统的...

    ssd4_exercise5

    在这个练习中,我们很可能会涉及固态硬盘(SSD)的基础知识、工作原理、性能优化以及与传统硬盘(HDD)的对比等主题。下面将根据这些信息,详细阐述可能涵盖的知识点。 1. **固态硬盘(SSD)基础**: - SSD是基于...

    SSD7所有练习答案

    - 工作原理:固态硬盘与传统机械硬盘不同,它基于闪存(Flash Memory)技术,无任何机械运动部件,数据存储在电可编程和电可擦除的存储单元中。 - 构成部分:主要包括控制器、NAND闪存芯片、缓存以及接口等。 - ...

    ssd5 Exercise 1答案

    在这个场景下,"Exercise 1"很可能是SSD5相关课程或学习材料的一部分,用于帮助学生或专业人士理解并掌握SSD5的基础知识和应用。 固态存储(Solid State Drive, SSD)是现代计算机存储技术的重要组成部分,它基于非...

    ssd4Exercise5答案

    2. **工作原理**:SSD由闪存颗粒(Flash Memory)组成,其中包含电荷陷阱单元,用于存储数据。数据通过控制器进行读取和写入,控制器负责管理闪存单元的访问,执行错误校验和数据校正。 3. **I/O操作**:在SSD上...

    icarnegie ssd4答案详解

    - **工作原理**:SSD基于非易失性闪存(Flash Memory),数据以电荷形式存储在浮栅晶体管中,即使断电也不会丢失。 - **主要组件**:包括控制器、NAND闪存芯片、缓存(DRAM)、接口(如SATA、PCIe等)以及电源管理...

    SSD4 exercise8

    1. **固态存储基础**:SSD是由闪存颗粒(Flash Memory)构成的存储设备,与传统硬盘(HDD)的机械读写方式不同,SSD没有移动部件,因此具有更快的读写速度、更低的延迟和更高的耐用性。 2. **工作原理**:SSD通过...

    SSD9 Exercise3 答案

    首先,SSD的基本工作原理是基于闪存(Flash Memory),而非传统的机械硬盘中的磁盘旋转和磁头读写。它由多个存储单元组成,每个单元可以存储数据并快速访问。SSD的优势在于高速读写速度、低延迟、无机械运动带来的...

    ssd9 exam1.zip

    综上所述,SSD9 Exam1的学习涵盖了固态硬盘的基础知识、性能特点和实际应用,对于理解如何选择和使用SSD,以及解决相关问题具有重要意义。随着技术的发展,SSD将更加广泛地应用于各个领域,提升存储效率和用户体验。

Global site tag (gtag.js) - Google Analytics