Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1170381
  • 博文数量: 173
  • 博客积分: 4048
  • 博客等级:
  • 技术积分: 2679
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-12 18:53
文章分类

全部博文(173)

文章存档

2018年(1)

2016年(1)

2013年(1)

2012年(118)

2011年(52)

分类: 服务器与存储

2012-11-15 15:07:27

 前面说过,闪存寿命是以P/E次数来计算的,而WL就是确保闪存内每个块被写入的次数相等的一种机制。若没有这个机制,SSD内的闪存颗粒就无法在同一时间内挂掉,那对用户来说就是灾难。
       会出现这种情况的原因在于,用户在LBA空间里的数据更新速度是不同的,有部分是经常需要更新,而有些却长期不需要变更,因此若没有WL, 很显然那些经常被更新的数据所在的闪存寿命会首先被消耗完毕,而不怎么需要变更的数据所在的闪存损耗就要小得多。为了避免出现这种状况,便需要WL这个机 制来保持SSD内的每个闪存颗粒的磨损程度在相对一致的状态且最后同时报废,但由于颗粒本身也有其个体差异,因此这里说的也只是最理想的状态。
       WL技术依赖于LBA和PBA的转换:也就是说,每次主机上应用程序请求相同的逻辑页地址时,闪存控制器动态的映射逻辑页地址到另一个不同 的物理页地址,并把这个映射的指向存放在一个特定的“映射表”里。而之前过期的物理页地址就被标记为“无效”并等待随后的擦除操作。这样一来,所有的物理 块就能被控制在一个相同磨损范围,并同时“老化”。(WL的实现机制请看下图)
      
       WL算法有动态及静态两种,简单来说动态WL是每次都挑最年轻的闪存块使用,老闪存块尽量不用。静态WL就是把长期没有修改的老数据从年轻 的闪存块里搬出来,重新找个最老的闪存块存放,这样年轻的闪存块就能再次被经常使用,概念很简单,只是这么一句话,但实现起来却非常的复杂,特别是静态 WL,而且也只有静态WL才算是真正的全盘WL。(无WL、动、静态WL对寿命的影响请看下图)
      
阅读(4086) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~