http://blog.51cto.com/taotao1240/1605833

简介:

一、Flash Technology

上一篇文章《IBM全闪存阵列--FlashSystem(1)》提过要了解plane,chip是什么意思,去看下这篇文章-http://www.cnblogs.com/heiyue/p/3436349.html。这里我再贴出来科普下。image

上图是一个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等。

image

NAND闪存还会利用多Plane设计以提升性能,请看下图:

image

多Plane设计的原理很简单,从上图中(Micron 25nm L73A)我们看到,一个晶片内部分成了2个Plane,而且2个Plane内的Block编号是单双交叉的,想象我们在操作时,也可以进行交叉操作(一单一双)来提升性能,根据测试,某些情况下性能可以比单Plane设计提高约50%以上。

image

上图向大家清楚说明了多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.

image

-- 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

image

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数据保护层。image

 

在 Flashsystem 中有以下四种Data protection的方式:

image

Various types of IBM FlashSystem protection

 

 

image    

总结: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

image

 

 

-- 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。






本文转自 taojin1240 51CTO博客,原文链接:http://blog.51cto.com/taotao1240/1605833,如需转载请自行联系原作者
目录
相关文章
|
数据采集 消息中间件 监控
数据库 ER 图介绍|学习笔记
快速学习数据库 ER 图介绍
636 0
数据库 ER 图介绍|学习笔记
|
7月前
|
数据采集 安全
http代理服务怎么进行挑选?
http代理服务怎么进行挑选?
|
6月前
|
存储 供应链 开发者
B/S 架构诞生的历史背景
B/S 架构诞生的历史背景
141 0
|
SQL 存储 分布式计算
关系代数和SQL语法
OLAP计算引擎是一架机器,而操作这架机器的是编程语言。使用者通过特定语言告诉计算引擎,需要读取哪些数据、以及需要进行什么样的计算。编程语言有很多种,任何人都可以设计出一门编程语言,然后设计对应的编译器做解析。SQL语言从发明出来到现在已经经历了近半个世纪,是什么让SQL持续的焕发青春呢?本文将介绍SQL的理论基础和各种高端玩法。
50308 3
关系代数和SQL语法
|
运维 监控 NoSQL
性能测试从零开始实施指南——测试计划篇
首先要阐述本次性能测试的背景,即被测系统类型,面向哪些用户,具备什么特点,为什么要进行性能测试,预期的一些指标等等。
性能测试从零开始实施指南——测试计划篇
|
存储 安全 API
Cobaltstrike4.0——记一次上头的powershell上线分析(二)
Cobaltstrike4.0——记一次上头的powershell上线分析
294 0
|
Oracle 关系型数据库 MySQL
MySQL窗口函数——分组排序函数:number_rank(),rank(),dense_rank()
MySQL窗口函数——分组排序函数:number_rank(),rank(),dense_rank()
400 0
MySQL窗口函数——分组排序函数:number_rank(),rank(),dense_rank()
Axure rp简单介绍及下载安装详细步骤
Axure rp简单介绍及下载安装详细步骤
248 0
Axure rp简单介绍及下载安装详细步骤
|
索引 Python
Pandas 根据 index 索引选择某些行
Pandas 根据 index 索引选择某些行
|
中间件 uml
阿里中间件seata源码剖析六:TCC模式中2阶段提交实现
阿里中间件seata源码剖析六:TCC模式中2阶段提交实现
332 3
阿里中间件seata源码剖析六:TCC模式中2阶段提交实现