V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aiqier
V2EX  ›  编程

关于固态硬盘的寻址原理和寻址速度的一个疑问?

  •  
  •   aiqier · 2017-04-20 11:08:23 +08:00 · 5496 次点击
    这是一个创建于 2784 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我从书中大概了解到固态硬盘。使用闪存而不是像机械硬盘那样要旋转磁头,所以读取速度很快。

    但是我很难理解,固态硬盘是如何找到某个地址的,我看到有一些文章提到它和内存寻址基本一样,还有文章提到它和内存寻址是一个数量级的。

    查阅了了相关资料。要么是太专业完全看不懂,要么也只是简单的说固态硬盘没有磁头,使用电门寻址要快很多。但是我还是无法想象它到底是如何寻址(随机读写)的。

    6 条回复    2017-05-22 11:28:40 +08:00
    BOYPT
        1
    BOYPT  
       2017-04-20 11:18:21 +08:00   ❤️ 1
    SSD 并不需要“寻址”,和内存一样,他的存储空间的地址都是一一对应的;
    但是为了兼容接口,需要模拟一个协议层的寻址指令,当接收到一个寻址指令时候马上会回应准备完成,所以很快。

    不过实际产品当中,不同 SSD 的厂商都有自己的技术,为了最大化磁盘效益,平均化读写单元寿命,利用冗余空间等过程,在 SSD 的内置固件里面会有非线性的寻址映射,跟内存的一一对应也不是完全一回事。
    kokutou
        2
    kokutou  
       2017-04-20 11:23:43 +08:00 via Android   ❤️ 1
    机械,找地址要磁头转个角度,然后再读。而且盘片速度就那么多,最快也就 7200 转,速度上不去,随机读就更惨,磁头不停地移动。

    固态,直接对着地址读就行了,不需要等。
    aiqier
        3
    aiqier  
    OP
       2017-04-20 11:34:58 +08:00
    @BOYPT 是“不是完全一回事”,还是“完全不是一回事”。。。
    liuhaotian
        4
    liuhaotian  
       2017-04-20 11:44:17 +08:00
    SSD 的结构和内存确实是很像的,实质上是 Flash Chip Block
    http://www.extremetech.com/wp-content/uploads/2015/07/2006640.jpg

    @BOYPT 说的非线性寻址映射就是因为 SSD 的擦写次数有限制,为了避免某一些 chip 被过度擦写坏掉,增加整体可靠性,来做的一个操作,实际上就是损耗均衡 ( wear leveling )。

    常见的有两类 wear leveling 算法, dynamic 和 static 。 dynamic 就是动态的把数据请求地址映射到擦写次数少的地址, static 是把擦写次数少的地址中的数据和热数据进行交换。

    具体的算法就有很多了,比如 LAST, FAST, BAST 等等等等。
    Halry
        5
    Halry  
       2017-04-20 12:12:33 +08:00 via iPhone
    有一个 ftl ,读取的时候直接从数片 nand 里面读取
    helloallen
        6
    helloallen  
       2017-05-22 11:28:40 +08:00
    固态盘一般以 nand flash 为介质存储数据。

    你可以了解一下 NAND 芯片的引脚定义还有编程接口,这个现在都是标准的。

    NANDflash 不同于传统磁性介质。没有寻到这个概念。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1040 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:19 · PVG 04:19 · LAX 12:19 · JFK 15:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.