NAND FLASH 的MLC和SLC架构对比
目前业内最具争议的话题莫过于NAND闪存的两大架构MLC和SLC了,这两种架构最大的区别是存取技术不同,由此也带来了制造成本、工艺要求、辅助电
路、存取次数上的迥异。从短期发展来看,SLC架构在使用上优势较为明显,也因此成为了部分厂商炫耀产品的资本。然而MLC架构具有成本低廉、单片容量较
SLC成倍增大等优势,长远来看势必会成为NAND闪存的下一代主流架构。现在购买随身数码影音产品也许我们还在为闪存芯片采用了哪种架构而顾虑,但在不
久的将来这种顾虑会完全消失,为什么呢?且听笔者慢慢分析。
NAND闪存可分为三大架构,分别是单层式储存(Single
Level Cell),即SLC;多层式储存(Multi Level Cell),即MLC;多位式存储(Multi Bit
Cell),即MBC。MLC是英特尔(INTEL)在1997年9月最先研发成功的,其原理是将两个位的信息存入一个浮动栅(Floating
Gate,闪存存储单元中存放电荷的部分),然后利用不同电位的电荷,透过内存储存格的电压控制精准读写。讲白话点就是一个Cell存放多个bit,现在
常见的MLC架构闪存每Cell可存放2bit,容量是同等SLC架构芯片的2倍,目前三星、东芝、海力士(Hynix)、IMFT(英特尔与美光合资公
司)、瑞萨(Renesas)都是此技术的使用者,而且这个队伍还在不断壮大,其发展速度远快于曾经的SLC架构。
SLC技术与
EEPROM原理类似,只是在浮置闸极(Floating gate)与源极(Source
gate)之中的氧化薄膜更薄,其数据的写入是透过对浮置闸极的电荷加电压,然后可以透过源极,即可将所储存的电荷消除,采用这样的方式便可储存每1个信
息位,这种技术的单一位方式能提供快速的程序编程与读取,不过此技术受限于低硅效率的问题,必须由较先进的流程强化技术才能向上提升SLC制程技术,单片
容量目前已经很难再有大的突破,似乎已经发展到了尽头。
MBC是英飞凌(Infineon)与赛芬半导体(Saifun
Semiconductors)合资利用NROM技术共同开发的NAND架构,技术上的问题目前还没有得到广泛应用。网上相关资料也非常有限,加之主题和
篇幅关系,就不做深入探讨了。
对MLC和SLC两大架构现在网上存在一个普遍的认识误区,那就是大家都认为MLC架构的NAND闪
存是劣品,只有SLC架构的NAND闪存才能在质量上有保障。殊不知采用MLC架构的NAND闪存产品在2003年就已经投入市场使用,至今也没有见哪位
用户说自己曾经购买的大容量CF、SD卡有质量问题。可能你会说这是暂时的,日后肯定出问题,
相关文档:
Flash 嵌入的问题论坛中有人问了好多次,到底应该怎么用,为什么通不过验证,要通过验证怎么办等等等。
讨论中也出现了不少的误解,所以我单开一个帖总结一下我所知道的东西,不想看我罗嗦的直接跳到最后看结论就可以了。
一、传统的方法
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
&nbs ......
现在有个灵感,那就是通过鼠标拖动这些小球,鼠标移动的时候,那些小球会跟踪鼠标目标移动。这些只要使用flash 绘图API制作,
就能够完成;
第一步:随机创造一些小球
private function creatBall():void
{
for (var i:int=0; i<10; i++)
{
var ball:Ball=new Ball();
addChild(ball);
l ......
文件如下
<BODY>
<SCRIPT src="swfobject.js"
type=text/javascript></SCRIPT>
<SCRIPT language=javascript>
var flashvars = {};
flashvars.myxmlpath = 'content.xml';
flashvars.type = 'content';
flashvars.decription = '0';
flashvars.textstyle = '';
flashvars.de ......
php版的Flash标签云(flash tagcloud)
想要标签云的同志们都来吧。
3D球形标签云(tagcloud),最初是源自WP的一个插件吧,然后经skiyo的修改,可支持中文,并随意放在自己的博客或网站的任意地方,我把代码和数据库整理一下,共同放出来。在此感谢skiyo!
核心代码:
<?php
require("config.php");
require_onc ......
Main.cpp (Win/*nix)
#include "FlexSecurityBox.h"
int main(int argc, char ** argv) {
char * address;
short port;
if (argc == 2)
{
address = "0.0.0.0";
port = atoi(argv[1]);
} else if (argc == 3)
{
address = argv[1];
port = atoi(argv[2]);
} else
{
printf("Y ......