1.2.7. Flash相对于普通设备的特殊性

根据上面提到过的,Flash最小操作单位,相对于普通存储设备,就显得有些特殊。

因为一般存储设备,比如硬盘或内存,读取和写入都是以位(bit)为单位,读取一个bit的值,将某个值写入对应的地址的位,都是可以按位操作的。

但是Flash由于物理特性,使得内部存储的数据,只能从1变成0,这点,这点可以从前面的内部实现机制了解到,对于最初始值,都是1,所以是0xFFFFFFFF,而数据的写入,即是将对应的变成0,而将数据的擦出掉,就是统一地,以block为单位,全部一起充电,所有位,都变成初始的1,而不是像普通存储设备那样,每一个位去擦除为0。而数据的写入,就是电荷放电的过程,代表的数据也从1变为了0。

所以,总结一下Flash的特殊性如下:

表 1.2. Flash和普通设备相比所具有的特殊性

普通设备(硬盘/内存等)Flash
读取/写入的叫法读取/写入读取/编程(Program)
读取/写入的最小单位Bit/位Page/页
擦除(Erase)操作的最小单位Bit/位Block/块
擦除操作的含义将数据删除/全部写入0将整个块都擦除成全是1,也就是里面的数据都是0xFF
对于写操作直接写即可在写数据之前,要先擦除,然后再写


[提示]提示
  1. 之所以将写操作叫做编程,是因为flash是从之前的EPROM、EEPROM等继承发展而来,而之前的EEPROM,往里面写入数据,就叫做编程Program,之所以这么称呼,是因为其对数据的写入,是需要用电去擦除/写入的,所以叫做编程。
  2. 对于目前常见的页大小是2K/4K的Nand Flash,其块的大小有128KB/256KB/512KB等。而对于Nor Flash,常见的块大小有64K/32K等。
  3. 在写数据之前,要先擦除,内部就都变成0xFF了,然后才能写入数据,也就是将对应的位由1变成0。