一、Flash Technology
上一篇文章《IBM全闪存阵列--FlashSystem(1)》提过要了解plane,chip是什么意思,去看下这篇文章-http://www.cnblogs.com/heiyue/p/3436349.html。这里我再贴出来科普下。
上图是一个8Gb 50nm的SLC颗粒内部架构,每个page有33,792个存储单元,每个存储单元代表1bit(SLC),所以每个page容量为4096Byte + 128Byte(SA区)。每个Block由64个page组成,所以每个Block容量为262,144Byte + 8192Byte (SA区)。Page是NAND Flash上最小的读取/写入(编程)单位(一个Page上的单元共享一根字符线Word line),Block是NAND Flash上最小的擦除单位。不同厂牌不同型号颗粒有不同的Page和Block容量。
如上所述,大家应该发现了,写入时,是在字符线上加压以写入数据,擦除时则是在位线上加压,因为一个块共享一条位线,这也是擦除的单位是块而不是页的原因,同理写入的最小单位是页的原因大家想必也已明白。
下图是个8Gb 50nm的SLC芯片,4KB+128字节的页大小,256KB+8KB的块大小。图中每个页内4096字节用于存储数据,另外128字节用于管理和ECC等。
NAND闪存还会利用多Plane设计以提升性能,请看下图:
多Plane设计的原理很简单,从上图中(Micron 25nm L73A)我们看到,一个晶片内部分成了2个Plane,而且2个Plane内的Block编号是单双交叉的,想象我们在操作时,也可以进行交叉操作(一单一双)来提升性能,根据测试,某些情况下性能可以比单Plane设计提高约50%以上。
上图向大家清楚说明了多Plane设计提升性能的原因。
通过这篇文章,我们知道在闪存中,plane>block>page,数据以page为单位写,以block为单位擦除。如果还有不理解的可以去搜索下杨总写的一篇文章《漫谈SSD原理与应用实践-v0.1.pdf》。
-------------------------------------------------------------------
二、Variable Stripe RAID
再说Flashsystem 840,在IBM Flash系列中,提供了两层的数据保护,一个是module-level的VSR(可变条带RAID),一个是System-level的RAID。System-level很好理解,就是横跨多个module组RAID,可横跨4(2D+1P+1S)、8(6D+1P+1S)或者12(10D+1P+1S)闪存模块 ,类似于传统的多块磁盘组RAID5。而module-level的VSR是一个flash module内部提供的data protection。下面我们着重讲VSR。
Variable Stripe RAID (VSR?) is a unique IBM technology that provides data protection of the memory page, block, or whole chip, 是IBM的专利,避免了在一个memory chip 或者plane failure时就更换整个Flash module,延长了Flash module寿命。
Due to the massive parallelism of DMA operations controlled by each FPGA and parallel access to chip sets, dies, planes, blocks,and pages, the implementation of VSR has minimal impact on performance.
-- Patented VSR allows RAID stripe sizes to vary.
-- If one die fails in a ten-chip stripe, only the failed die is bypassed, then data is restriped across the remaining nine chips.
-- VSR reduces maintenance intervals caused by flash failures
The value of the IBM FlashSystem Variable Stripe RAID
VSR特点:
VSR是被一个module里的4个Flash controller控制和管理的
以8KB一个Page写,以1MB一个Flash blocks erase
每个Chip有16个planes
如果一个plane坏掉,前提是一个plane里至少有256个Flash blocks fail
一个plane也可以整体fail
64个planes坏了或者4个chips坏了,才会认为整个module 坏掉
当一个Flash module坏了,2D Flash RAID会负责data protection
VSR主要作用在Plane级,横跨闪存层,采用9+1(Plane) RAID 5的方式实现条带化,RAID条带可根据闪存模块中的闪存Plane故障情况自动调整,比如9+1、8+1、7+1,甚至6+1。当一个或多个Plane发生故障,其将自动重新进行条带化以省却人工干预,并自动继续执行和操作从主机设备过来的读写请求。
Two-dimensional (2D) Flash RAID 是指module-level的VSR和system-level的RAID5。为每个系统提供了两个独立的RAID 5数据保护层。
在 Flashsystem 中有以下四种Data protection的方式:
Various types of IBM FlashSystem protection
总结:VSR是第一层的数据保护(module level),system-level RAID是以防Flash controller failure或者module failure,都是基于传统的RAID5。
三、Garbage Collection
本篇之前提到过说由于Flash memory的特性,Flashsystem 中数据以page(由多个cells组成)为单位写,以block为单位擦除。实现方式是“Erase-on-Rewrite”。具体情况下图 Garbage Collection
-- Flash memory是可编程、有限次数可擦除,Limited Program/Erase Cycles(P/E cycles) 就是指Flash memory最大能可编程/擦除多少次。
-- Single-level cell (SLC) 有更高性能,更耐用,一般在5K~100K
-- eMEL的P/E cycles一般是30K~10K, cMLC是5K~1K
Wear leveling均衡读写
如果某些flash cell被PE的很频繁,而另一些则用的很少,那就会导致这些flash cell会比整个flash module磨损的更快,因此有了wear leveling来使所有的write/erase分散。这样,单个Flash block就不会由于频繁PE而过早地fail。