A. 储存卡存储数据原理
储存卡也可以叫做闪存主要分为NOR Flash和NAND Flash两种,两种闪存的原理有所不同,下面介绍的就是这两种闪存运作的基本原理。
NOR Flash
闪存将数据存储在由浮闸晶体管组成的记忆单元数组内,在单阶存储单元(Single-level cell, SLC)设备中,每个单元只存储1比特的信息。而多阶存储单元(Multi-level cell, MLC)设备则利用多种电荷值的控制让每个单元可以存储1比特以上的数据。
闪存的每个存储单元类似一个标准MOSFET, 除了晶体管有两个而非一个闸极。在顶部的是控制闸(Control Gate, CG),如同其他MOS晶体管。但是它下方则是一个以氧化物层与周遭绝缘的浮闸(Floating Gate, FG)。这个FG放在CG与MOSFET通道之间。由于这个FG在电气上是受绝缘层独立的, 所以进入的电子会被困在里面。在一般的条件下电荷经过多年都不会逸散。当FG抓到电荷时,它部分屏蔽掉来自CG的电场,并改变这个单元的阀电压(VT)。在读出期间。利用向CG的电压,MOSFET通道会变的导电或保持绝缘。这视乎该单元的VT而定(而该单元的VT受到FG上的电荷控制)。这股电流流过MOSFET通道,并以二进制码的方式读出、再现存储的数据。在每单元存储1比特以上的数据的MLC设备中,为了能够更精确的测定FG中的电荷位准,则是以感应电流的量(而非单纯的有或无)达成的。
逻辑上,单层NOR Flash单元在默认状态代表二进制码中的“1”值,因为在以特定的电压值控制闸极时,电流会流经通道。经由以下流程,NOR Flash 单元可以被设置为二进制码中的“0”值。
1. 对CG施加高电压(通常大于5V)。
2. 现在通道是开的,所以电子可以从源极流入汲极(想象它是NMOS晶体管)。
3. 源-汲电流够高了,足以导致某些高能电子越过绝缘层,并进入绝缘层上的FG,这种过程称为热电子注入。
由于汲极与CG间有一个大的、相反的极性电压,借由量子穿隧效应可 以将电子拉出FG,所以能够地用这个特性抹除NOR Flash单元(将其重设为“1”状态)。现代的NOR Flash芯片被分为若干抹除片段(常称为区扇(Blocks or sectors)),抹除操作只能以这些区块为基础进行;所有区块内的记忆单元都会被一起抹除。不过一般而言,写入NOR Flash单元的动作却可以单一字节的方式进行。
虽然抹写都需要高电压才能进行,不过实际上现今所有闪存芯片是借由芯片内的电荷帮浦产生足够的电压,所以只需要一个单一的电压供应即可。
B. 内存卡的储存数据的原理
存储原理,还是要从EPROM和EEPROM说起。
EPROM是指其中的内容可以通过特殊手段擦去,然后重新写入。其基本单元电路(存储细胞)如下图所示,常采用浮空栅雪崩注入式MOS电路,简称为FAMOS。它与MOS电路相似,是在N型基片上生长出两个高浓度的P型区,通过欧姆接触分别引出源极S和漏极D。在源极和漏极之间有一个多晶硅栅极浮空在SiO2绝缘层中,与四周无直接电气联接。这种电路以浮空栅极是否带电来表示存1或者0,浮空栅极带电后(譬如负电荷),就在其下面,源极和漏极之间感应出正的导电沟道,使MOS管导通,即表示存入0。若浮空栅极不带电,则不形成导电沟道,MOS管不导通,即存入1。
EEPROM基本存储单元电路的工作原理如下图所示。与EPROM相似,它是在EPROM基本单元电路的浮空栅的上面再生成一个浮空栅,前者称为第一级浮空栅,后者称为第二级浮空栅。可给第二级浮空栅引出一个电极,使第二级浮空栅极接某一电压VG。若VG为正电压,第一浮空栅极与漏极之间产生隧道效应,使电子注入第一浮空栅极,即编程写入。若使VG为负电压,强使第一级浮空栅极的电子散失,即擦除。擦除后可重新写入。
闪存的基本单元电路如下图所示,与EEPROM类似,也是由双层浮空栅MOS管组成。但是第一层栅介质很薄,作为隧道氧化层。写入方法与EEPROM相同,在第二级浮空栅加以正电压,使电子进入第一级浮空栅。读出方法与EPROM相同。擦除方法是在源极加正电压利用第一级浮空栅与源极之间的隧道效应,把注入至浮空栅的负电荷吸引到源极。由于利用源极加正电压擦除,因此各单元的源极联在一起,这样,快擦存储器不能按字节擦除,而是全片或分块擦除。 到后来,随着半导体技术的改进,闪存也实现了单晶体管(1T)的设计,主要就是在原有的晶体管上加入了浮动栅和选择栅,
在源极和漏极之间电流单向传导的半导体上形成贮存电子的浮动棚。浮动栅包裹着一层硅氧化膜绝缘体。它的上面是在源极和漏极之间控制传导电流的选择/控制栅。数据是0或1取决于在硅底板上形成的浮动栅中是否有电子。有电子为0,无电子为1。
闪存就如同其名字一样,写入前删除数据进行初始化。具体说就是从所有浮动栅中导出电子。即将有所数据归“1”。
写入时只有数据为0时才进行写入,数据为1时则什么也不做。写入0时,向栅电极和漏极施加高电压,增加在源极和漏极之间传导的电子能量。这样一来,电子就会突破氧化膜绝缘体,进入浮动栅。
读取数据时,向栅电极施加一定的电压,电流大为1,电流小则定为0。浮动栅没有电子的状态(数据为1)下,在栅电极施加电压的状态时向漏极施加电压,源极和漏极之间由于大量电子的移动,就会产生电流。而在浮动栅有电子的状态(数据为0)下,沟道中传导的电子就会减少。因为施加在栅电极的电压被浮动栅电子吸收后,很难对沟道产生影响。
C. U盘,储存卡是如何储存数据的啊,困扰我好久了。
转一篇文章"U盘原理",很长,专业术语较多,希望能有帮助。
----------------------------
U盘设计
“USB闪存盘”(以下简称“U盘”)是基于USB接口、以闪存芯片为存储介质的无需驱动器的新一代存储设备。U盘的出现是移动存储技术领域的一大突破,其体积小巧,特别适合随身携带,可以随时随地、轻松交换资料数据,是理想的移动办公及数据存储交换产品。
U盘的结构基本上由五部分组成:USB端口、主控芯片、FLASH(闪存)芯片、PCB底板、外壳封装。
U盘的基本工作原理
USB端口负责连接电脑,是数据输入或输出的通道;主控芯片负责各部件的协调管理和下达各项动作指令,并使计算机将U盘识别为“可移动磁盘”,是U盘的“大脑”;FLASH芯片与电脑中内存条的原理基本相同,是保存数据的实体,其特点是断电后数据不会丢失,能长期保存;PCB底板是负责提供相应处理数据平台,且将各部件连接在一起。当U盘被操作系统识别后,使用者下达数据存取的动作指令后,USB移动存储盘的工作便包含了这几个处理过程。
通用串行总线(Universal serial Bus)是一种快速灵活的接口,
当一个USB设备插入主机时,识别出USB设备是一个支持Bulk-Only传输协议的海量存储设备。这时应可进行Bulk-Only传输方式。在此方式下USB与设备之间的数据传输都是通过Bulk-In和Bulk-Out来实现的。在这种传输方式下,有三种类型数据在USB和设备传送,它们是命令块包(CBW),命令执行状态包(CSW)和普通数据包。CBW是主机发往设备的命令。
格式如下:其中dCBWSignature的值为43425355h,表示当前发送的是一个CBW。
DCBWDataTransferLength:表示这次CBW要传送数据长度。
BmCBWFlags:表示本次CBW是读数据还是写数所BBWCBLength:表示命令的长度。 CBWCB:表示本次命令内容。也即是SCSI命令。
当设备从主机收到CBW块以后,它会把SCSI命令从CBW中分离出来,然后根据要求执行,执行的结果又以CSW的形式发给主机。 CSW的格式如下:
其中dCSWSignature的值为53425355h,表示当前发送的是一个CSW。 DCSWTag:必须和CBW中dCBWTag一样。
DCSWDataResie:还要传送的数据。
BCSWStatue:命令执行状态,命令正确执行时,为0。
由于USB设备硬件本身的原因,它会使USB总线的数据信号线的电平发生变化,而主机会经常扫描USB总线。当发现电平有变化时,它即知道有设备插入。USB设备它本身会初始化,并认为地址是0。也就是没有分配地址,这有点象刚进校的大学生没有学号一样。
正如有一个陌生人闯入时我们会问“你是什么人”一样,当一个USB设备插入主机时,,它也会问:“你是什么设备”。并接着会问,你使用什么通信协议等等。当这一些信息都被主机知道后,主机与USB设备之间就可以根据它们之间的约定进行通信。
USB的这些信息是通过描述符实现的,USB描述符主要包括:设备描述符,配置描述符,
接口描述符,端点描述符等。当一个U盘括入主机时,你立即会发现你的资源管理器里多了一个可移动磁盘,在Win2000下你还可以进一步从主机上知道它是爱国者或是朗科的。这里就有两个问题,首先主机为什么知道插入的是移动磁盘,而不是键盘或打印机等等呢?另外在Win2000下为什么还知道是哪个公司生产的呢?其实这很简单,当USB设备插入主机时,主机首先就会要求对方把它的设备描述符传回来,这些设备描述符中就包含了设备类型及制造商信息。又如传输所采用的协议是由接口描述符确定,而传输的方式则包含在端点描述符中。
USB设备分很多类:显示类,通信设备类,音频设备类,人机接口类,海量存储类.特定类的设备又可分为若干子类,每一个设备可以有一个或多个配置,配置用于定义设备的功能。配置是接口的集合,接口是指设备中哪些硬件与USB交换信息。每个与USB交换信息的硬件是一个端点。因些,接口是端点的集合。
U盘应属于海量存储类。
USB海量存储设备又包括通用海量存储子类,CDROM,Tape等,U盘实际上属于海量存储类中通用海量存储子类。通用海量存储设备实现上是基于块/扇区存储的设备。
USB组织定义了海量存储设备类的规范,这个类规范包括4个独立的子类规范。主要是指USB总线上的传输方法与存储介质的操作命令。
海量存储设备只支持一个接口,即数据接口,此接口有三个端点Bulk input ,Bulk output,中断端点
这种设备的接口采用SCSI-2的直接存取设备协议,USB设备上的介质使用与SCSI-2以相同的逻辑块方式寻址。
在源极和漏极之间电流单向传导的半导体上形成贮存电子的浮动棚。浮动栅包裹着一层硅氧化膜绝缘体。它的上面是在源极和漏极之间控制传导电流的选择/控制栅。数据是0或1取决于在硅底板上形成的浮动栅中是否有电子。有电子为0,无电子为1。
闪存就如同其名字一样,写入前删除数据进行初始化。具体说就是从所有浮动栅中导出电子。即将有所数据归“1”。
写入时只有数据为0时才进行写入,数据为1时则什么也不做。写入0时,向栅电极和漏极施加高电压,增加在源极和漏极之间传导的电子能量。这样一来,电子就会突破氧化膜绝缘体,进入浮动栅。
读取数据时,向栅电极施加一定的电压,电流大为1,电流小则定为0。浮动栅没有电子的状态(数据为1)下,在栅电极施加电压的状态时向漏极施加电压,源极和漏极之间由于大量电子的移动,就会产生电流。而在浮动栅有电子的状态(数据为0)下,沟道中传导的电子就会减少。因为施加在栅电极的电压被浮动栅电子吸收后,很难对沟道产生影响。
U盘原理的存储是:计算机把二进制数字信号转为复合二进制数字信号(加入分配、核对、堆栈等指令)读写到USB芯片适配接口,通过芯片处理信号分配给EPROM2存储芯片的相应地址存储二进制数据,实现数据的存储。
D. SD卡是怎么储存数据的
SD 卡读写数据是以块为单位进行的.
对卡读一个或多个块通过发送CMD17/CMD18命令来实现;
对卡写一个或多个块通过发送CMD24/CMD25命令来实现.
这些数据在末尾附有CRC校验码,如果校验码失败,则所传输的数据都会被丢掉,数据的读/
写操作也会被中止.
Cache层
Cache原理: 使用较快的存储装置保留一份从较慢速存储装置中所读数据, 使读/写动作
先在较快速的装置上完成,这样可以提升系统的响应速度. Cache越大,响应速度越快.
决定处理器成本的最主要的因素就是处理器芯片的面积
缓存的主要结构如下:
typedef struct _Disk_Cache {
U8 Drive; //表示Cache数组中某个元素的存储状态
U8 Flag; //表示某个元素可以被某种方式访问: 只读/只写/读||写
U8 RW_ID; //计数器,表示元素有多久没被访问了
U32 SecIndex; //记录被缓存的扇区的逻辑扇区索引
U8 buf[DISK_CACHE_SIZE]; //存放被缓存的扇区的具体内容
} Disk_cache;
当有读/写的需求时, 从SD卡读取的数据一份放到Cache数组的空闲扇区中;
如果系统继续要求读取/写入同一份数据或同一扇区时, 系统就可以直接从Cache中进行
读/写, 从而大大提高系统存取速度.
每次访问Cache时, Cache数组中所有元素的RW_ID值会被加1,直至最大值;
当某个元素被访问时, 这个元素的RW_ID值被清零;
当cache数组的所有元素都已分配又有新的扇区被访问时, 找出Cache模块中RW_ID值最大
的元素分配给新的扇区作为缓存(需要回写的内容进行回写后再分配给新的扇区).
需要注意的是: 这种技术如果仅用于读数据是没问题的. 但用于写数据, 即如果写入cac
he的数据不能立即写回SD卡的物理内存中, 则一旦断电会丢失数据; 若每次都将数据回
写到SD上, 则影响写速度.
基于这种情况,将Cache写入的方式分为直写式和回写式.
a) 直写式: 每次写入cache的同时, 把数据回写到SD卡物理内存中, 以保证cache的内容
和SD卡物理内存中相应单元的数据保持一致.
b) 回写式: 只把数据写入cache(这样有可能出现cache中数据得到更新但物理内存中
数据陈旧的情况), 并在cache中通过设置Flag标明该缓冲区的数据是否需要回写; 等
系统空闲或进行cache替换时,再将数据回写到SD卡上
更多内容 http://wenda.tianya.cn/question/6312109b94254985