PCEVA,PC绝对领域,探寻真正的电脑知识
  • 内容展现
  • 最新评论
SSD工作原理傻瓜教程
2011-1-30 00:18| 发布者: neeyuese| 查看: 13536| 评论: 0
摘要: 由于本人之前的C300测试贴中的部分原理解释不是最“傻瓜”式,造成很多朋友的困惑,在群里在论坛里讨论时,发现很多朋友的理解都还是有问题,故此特地开一个帖子解释的更“傻瓜”点。 首先我们来看下,作为L63B颗粒 ...
NAND工作原理

由于本人之前的C300测试贴中的部分原理解释不是最“傻瓜”式,造成很多朋友的困惑,在群里在论坛里讨论时,发现很多朋友的理解都还是有问题,故此特地开一个帖子解释的更“傻瓜”点。

首先我们来看下,作为L63B颗粒,Intel/Micron的34nm 4KB page的颗粒,内部结构是这样的。
image001.jpg

1个page为4KB,1个Block为256个page组成,1个Plane由2048个Block组成,2个Plane组成1个Die,也就是最小的芯片(4GB),X25-M 80G Gen2 SSD上面我们看到10个颗粒,每个颗粒是8GB的,就是由2个Die封装起来的。

Page为最小的读写单位,Block为最小的擦除/编程单位。 (我知道这些很多人都知道,重复重复再重复我也很烦)。

接下来,我来假设一个主控和颗粒环境:
image003.jpg

1个8通道8位的主控连接到8个Die上,为了解释方便,我这里就画了每个Die里的第一个Block。(实际当然要复杂很多)

好了,接下来我们要进行读写了,看清楚,这下面的东西才是你们最想知道的。
1. 现在我先对主机发送一条命令,要求写入4KB。
image005.jpg

主控接到主机发来的指令后,往颗粒1的Block1里写入了1个4KB(占1Page)。

2.继续写入8KB。
image007.jpg

主控接到主机发来的指令后,往颗粒2的Block1里和颗粒3的Block1里各写入4KB。

好了,我们来举一反三,如果写入的是32KB,那么主控就会一下子往每个颗粒的Block1里写入4KB,这样就能发挥出这个SSD主控理论最大的写入带宽,相对4KB来说最好情况下我们可以得到8倍的速度(取决于主控对通道的优化,颗粒当前的文件状况等等)。这样你们就会知道为啥4KB的写入慢,而持续写入SSD并不慢的道理了吧,实际情况下当然不会都写Block1,我这里只是想解释的简单点。这个类似RAID 0的操作模式就是大部分的SSD内部操作情况。

上面是写入的情况,对于读取自然也是如此,4KB的读取就从一个Block里读,而32KB的话就从8个Block里拿,速度是不是8倍提升取决于要读取 的数据是不是平均分布在每个颗粒的Block里,如果32KB数据是存储在图中颗粒1~4的Block1里的(每个Block假设8KB),那么读取就最 多只有4倍的提升了,这也是为啥文件越小传输率越低的道理。

这样经过一段时间之后,所有的NAND Block都被填满了,就会产生如下图的情况:
image009.jpg

这个图显示的是LBA(逻辑块地址),也就是我们的操作系统看到的文件系统结构,而非我们的SSD主控制器看到的结构。

图中红色的地方表示为这个地址里的数据已经“过期”或者“无效”,这些红色地址是如何产生的?在你删除文件的时候,这个地址就“无效”了,里面的文件还在,只不过不用了而已,等待下一次的数据更新并覆盖进去。

对于SSD的主控制器来说,它看到的并不是如图中这样,而是如下图:
image011.jpg


是的,在SSD主控制器看来,这里的文件都是有效的,也就是不能擦除,那么接下来如何?在操作系统的要求下,继续写入数据的话就要在前面LBA红色的地方写入,对于SSD来说,这时候就需要把整个块的绿色读进缓存并更新操作系统发来的数据,之后擦除这整个块并把缓存里的整个更新完的块写回去,这样即使写入4KB的数据,其实也是大费周章的折腾,这就是早期SSD主控制器或者U盘写入放大高的道理,这些SSD的算法上不支持GC,也没有Trim,所以在随机写入的表现上非常的悲剧。

1234下一页
收藏 邀请
0
本文版权归 PCEVA,PC绝对领域,探寻真正的电脑知识 原作者所有 转载请注明出处

最新评论

热门评论
    热门评论
      返回顶部