我从书中大概了解到固态硬盘。使用闪存而不是像机械硬盘那样要旋转磁头,所以读取速度很快。
但是我很难理解,固态硬盘是如何找到某个地址的,我看到有一些文章提到它和内存寻址基本一样,还有文章提到它和内存寻址是一个数量级的。
查阅了了相关资料。要么是太专业完全看不懂,要么也只是简单的说固态硬盘没有磁头,使用电门寻址要快很多。但是我还是无法想象它到底是如何寻址(随机读写)的。
1
BOYPT 2017-04-20 11:18:21 +08:00 1
SSD 并不需要“寻址”,和内存一样,他的存储空间的地址都是一一对应的;
但是为了兼容接口,需要模拟一个协议层的寻址指令,当接收到一个寻址指令时候马上会回应准备完成,所以很快。 不过实际产品当中,不同 SSD 的厂商都有自己的技术,为了最大化磁盘效益,平均化读写单元寿命,利用冗余空间等过程,在 SSD 的内置固件里面会有非线性的寻址映射,跟内存的一一对应也不是完全一回事。 |
2
kokutou 2017-04-20 11:23:43 +08:00 via Android 1
机械,找地址要磁头转个角度,然后再读。而且盘片速度就那么多,最快也就 7200 转,速度上不去,随机读就更惨,磁头不停地移动。
固态,直接对着地址读就行了,不需要等。 |
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 等等等等。 |
5
Halry 2017-04-20 12:12:33 +08:00 via iPhone
有一个 ftl ,读取的时候直接从数片 nand 里面读取
|
6
helloallen 2017-05-22 11:28:40 +08:00
固态盘一般以 nand flash 为介质存储数据。
你可以了解一下 NAND 芯片的引脚定义还有编程接口,这个现在都是标准的。 NANDflash 不同于传统磁性介质。没有寻到这个概念。 |