V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
aiqier
V2EX  ›  编程

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

  •  
  •   aiqier · Apr 20, 2017 · 6069 views
    This topic created in 3302 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

    固态,直接对着地址读就行了,不需要等。
    aiqier
        3
    aiqier  
    OP
       Apr 20, 2017
    @BOYPT 是“不是完全一回事”,还是“完全不是一回事”。。。
    liuhaotian
        4
    liuhaotian  
       Apr 20, 2017
    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  
       Apr 20, 2017 via iPhone
    有一个 ftl ,读取的时候直接从数片 nand 里面读取
    helloallen
        6
    helloallen  
       May 22, 2017
    固态盘一般以 nand flash 为介质存储数据。

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

    NANDflash 不同于传统磁性介质。没有寻到这个概念。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2630 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 123ms · UTC 11:10 · PVG 19:10 · LAX 04:10 · JFK 07:10
    ♥ Do have faith in what you're doing.