------2017/05/22 20:30
最近在写论文,很扯淡的论文,因此没有啥写的意义,纯属为了给老师交差。无聊就看看书,不为别的,就只是看看,记录一下吧
1、SSD(固态硬盘),比较常见的是基于FLASH介质的,一个PAGE是FLASH芯片IO的最小单位,每128个page组成一个block,每2048个block组成一个区域。一整片flash芯片由两个区域组成,一个区域存储奇数的block。一个存储偶数序号的block。两个区域(plane)可以并行操作。
flash芯片的page大小可以为4314B(其实就是4KB+218B的ECC校验)或者是2111B(这个还不理解如何得出),其实block大小也视flash容量而定,可以是32KB,64KB...(比如文件系统的块大小也是定的比如KB,8KB..)
2、向flash芯片中写入数据前需要进行擦除(这个见过好多次,这个在某些方面真的容易导致SSD损坏。。个人认为),SSD的擦除是这么定义的:将一大片的连续的Cell一下子全部放电。这一大片的连续的cell其实就是一个block,即每次擦除只能擦除一整个block或者多个block,意味着不能擦除某个或者某段page,或者单个或者多个page(类似于文件系统读写数据的最小单元是block,而不是扇区)。一块崭新的SSD 上所有的cell都是已经被擦除过的。
SSD以page为单位进行写操作,写完一个page再写一个page。读操作也是以一个page为单位
3、FLASH芯片的缺点之--写之前的擦除操作
我的天,果然写之前擦除是flash芯片的一个很大的通病。具体如下:如上述所说,即使我只是些一个page,但是我仍然要将该page所在的block进行擦除,当然擦除之前需要将该block数据读取出来到SSD的RAM BUFFER中。然后擦除整个block,然后将要写入的page的数据在该ram中对应位置进行修改,然后整个block写入原来的已擦除的block中。
这样加大了写操作的开销,而且这也是导致