Multi-Level Cell(MLC) and Single-Level Cell(SLC)

MLC和SLC最大的区别在于 : 

  MLC允许在一个内存元素中存储多个比特位的信息(通常是2个比特位)

  SLC仅允许在一个内存元素中存储1个比特位的信息

所以在同样数量的晶体管里面, MLC可以比SLC存储更多的数据.

另外要介绍一下平均擦寫演算法 : 

顧名思義,大家都知道每個快閃記憶體的每個塊是有擦寫(Erase)限制的,尤其是在MLC的快閃記憶體上面,每個塊的擦寫次數從5xnm工藝的5,000次,到34nm的3,000次,以及現在25nm的1,500次到2000次之間,雖然現在Intel/Mircon已經推出原廠掛保證的25nm eMLC,達到34nm3,000次的擦寫限制數。但每一次的工藝進步提升的就是單位容量比率,在同樣尺寸的TSOP 48腳封裝大小下,nm指的就是每個閘極壁之間的距離,當這工藝越進步,單位容量是可能翻倍提升,例如34nm的每顆4GB容量,到了25nm,變成是8GB容量起跳,不過這越見越擠的空間,就代表中間儲存的電子進出的空間有限,閘極壁變薄,間接減低了耐久壽命,為了怕同樣的電子不停的擦寫,導致某些塊容易提早升天,因此我們需要藉由控制器的平均演算法把資料平等的寫入到每個不同的區塊內,儘量讓每個區塊的壽命都是均等的。

MLC和SLC的优缺点 : 

MLC优点

成本低, 同样数量的晶体管可以做到更大的容量.

MLC缺点

  由于1个内存元素存储多个比特信息, 所以错误几率高, 需要纠错算法. 同时影响写入速度. 

  在生命周期内可擦写的次数更少, 寿命短.

  更耗电.

SLC优点

  写入速度快.

  寿命更长.

  更省电.

SLC缺点

  成本高.

【参考】

1. http://en.wikipedia.org/wiki/MLC_flash

2. http://en.wikipedia.org/wiki/Floating_Gate_MOSFET

3. http://en.wikipedia.org/wiki/Flash_memory

4. http://en.wikipedia.org/wiki/SandForce

5. http://en.wikipedia.org/wiki/Indilinx

6. http://en.wikipedia.org/wiki/JMicron

7. http://en.wikipedia.org/wiki/Marvell_Technology_Group

8. http://en.wikipedia.org/wiki/Phison

9. http://chinese.ocztechnologyforum.com/forum/showthread.php?18-%E6%8A%80%E8%A1%93%E7%AF%87-%E5%90%91%E6%82%A8%E7%B0%A1%E5%96%AE%E4%BB%8B%E7%B4%B9SandForce%E6%8E%A7%E5%88%B6%E5%99%A8%E7%9A%84%E6%9E%B6%E6%A7%8B

10. http://www.linux-mtd.infradead.org/doc/nand.html

11. http://www.linux-mtd.infradead.org/nand-data/nanddata.html

12. http://www.linux-mtd.infradead.org/tech/mtdnand/index.html

13. http://en.wikipedia.org/wiki/Bit_error_ratio

时间: 2024-12-26 05:49:15

Multi-Level Cell(MLC) and Single-Level Cell(SLC)的相关文章

Cell自适应高度及自定义cell混合使…

第一部分:UItableViewCellAdaptionForHeight : cell的自适应高度 第二部分:CustomTableViewCell:自定义cell的混合使用(以简单通讯录为例) =================cell的自适应高度==================== AppDelegate.m #import "NewsController.h"  self.window.rootViewController = [[[UINavigationControll

tableview的cell问题-关于tableview的cell的问题

问题描述 关于tableview的cell的问题 我自定义的cell,给每一个cell上都添加了一个UIPanGestureRecognizer手势,但是我现在想让其中一个cell触发手势的时候别的cell手势都禁用,也就是两个手指拖动两个cell是没有效果的,我该如何判断呢? 我判断了 if (!(gesture.maximumNumberOfTouches = 1)) { return; } 似乎没有效果啊..... 求在线解答 解决方案 关于- tableView:cellForRowAt

在datagridview加column也能引发rowsadded事件,那为什么我加了三个column然后在rowsadded事件中,想遍历新加入的哪个row的cell,怎么只有一个cell?

问题描述 inti=0;privatevoiddataGridView2_RowsAdded(objectsender,DataGridViewRowsAddedEventArgse){inta=dataGridView2.Rows.Count;//inti=0;intd=dataGridView2.Rows[e.RowIndex].Cells.Count;foreach(DataGridViewCelldgvcindataGridView2.Rows[e.RowIndex].Cells){dg

iOS中 自定义cell升级版 (高级)

接上次分享的自定义cell进行了优化:http://blog.csdn.net/qq_31810357/article/details/49611255 指定根视图: [objc] view plain copy self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:[[RootTableViewController alloc] initWithStyle:UITa

iOS中大流中的自定义cell 技术分享

版权声明:本文为博主原创文章,未经博主允许不得转载. AppDelegate.m指定根视图 [objc] view plain copy self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:[[RootTableViewController alloc] initWithStyle:UITableViewStylePlain]];   //根视图 RootTable

将一种cell当做几种cell使用

将一种cell当做几种cell使用 将一种cell当做几种cell用是有着一些意义的,比如,有时候,不同的cell之间差异很小,如果再派生一个cell出来,就会显得很麻烦,这时候,将这个cell当做几个cell用才有市场的说:) 效果: 源码: ModelCell.h 与 ModelCell.m // // ModelCell.h // Cells // // Copyright (c) 2014年 Y.X. All rights reserved. // #import <UIKit/UIKi

解决tableView中cell动态加载控件的重用问题

解决tableView中cell动态加载控件的重用问题 tableView的cell,有时候需要在运行时取得对应的数据后才能够动态的创建该cell中的控件并加载到该cell中,此时,你一定会遇到重用问题,即使你能做到该cell只根据数值加载了一回控件,你也没法保证不出现重用问题:) 效果(请注意查看,移动下面的格子时,上面出现了重用的问题) 源码: YXCell.h // // YXCell.h // YXTableView // // Copyright (c) 2014年 Y.X. All

重写UITableViewCell子类中属性的setter方法来实现隐藏或显示该cell中的某些控件

重写UITableViewCell子类中属性的setter方法来实现隐藏或显示该cell中的某些控件 为什么会需要这样子的一种方法来实现隐藏或者显示一个cell中的某些控件呢? 其实,隐藏cell中某些控件可以直接在tableView:cellForRowAtIndexPath:方法中直接实现,我们需要判断外部变量比如bool值来决定是否显示这个控件,但需要额外的代码写在tableView:cellForRowAtIndexPath:方法当中,如果我们把bool值传递给该cell让其自己判断是否

IOS 动态改变cell的高度

 #import "ViewController.h" @interface ViewController () { UITableView *_table; NSMutableArray *_dataList; UIView *footView; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; _table=[[UITableView alloc]initWithFram