这篇文章我是带着一定目的性去看的,主要是想知道FLASH CACHE做缓存,跟NVRAM作缓存,相同优势有哪些?不同优势有哪些?缺陷又在哪里?接下来就对文章做一个全面的总结~
FLASH近些年被广泛使用在存储系统,主要是由于它具非易失,高密度,低成本的优势。但是它的缺陷也是很明显的,它的可管理性和可靠性是必须要解决的两个挑战性问题,可靠性上:即使FLASH是非易失的,在某种情况下,依然存在不一致性,cell的写穿也是其考虑的重点问题。跟NVRAM对比,NVRAM同样具有非易失,高密度,访问速度接近DRAM的优势,但是缺陷在于,cost比较高,一致性问题仍然存在,写寿命问题也是关注重点。具体对比如下图所示:
鉴于以上对比,我们进一步详细了解,到底为什么可以使用FLASH做cache?
- 使用NAND FLASH能够降低系统memory的power
如上图所示,FLASH在激活power,空闲power上远远小于DRAM,而在读延迟,写延迟上,比DRAM慢一个数量级,若把DRAM的大小减少,将FLASH加入memory系统,扩展内存容量,会达到节能1/4的效果。
之前的研究就有使用NOR cells,我们要让NAND Flash做cache,只需要简单修改一下NAND。
用NAND Flash做disk caches,两个噩待解决的问题:
- 垃圾回收的问题,当Flash的使用率在80%的时候,GC的开销占全部开销的20%,再往上走,开销能达到80%~100%
- memory需要存储Flash data structures的开销。
要使用FLASH做disk cache就必须解决这两个问题。
为了解决第一个问题,文章提出:
(分为read region和write region,垃圾回收的开销会减小)
为了解决第二个问题,文章提出:
(在flash上层接DRAM,缓存这些数据结构)
3 Architecture of the Flash based disk cache
FlashCache hash table (FCHT)- stores the mapping
between addresses on disk and Flash. The FCHT was
first introduced in [16].
•Flash page status table (FPST)- stores error correction
code (ECC) strength, SLC/MLC mode and a saturating
access counter. It also stores a valid bit field.
•Flash block status table (FBST)- records the number
of erase operations performed on each block as well as
the degree of wear out.
•Flash global status table (FGST)- tracks average latency and miss rate of the Flash based disk cache.
写不是单纯地写,写完之后,可能变成读块。读也是不完全独立地读,要对读的块进行写,要从读块evict,在写块中新建?两个怎样进行交互?
-
- 将FLASH cache分为两个不同的领域,读或者写区域
- 实现FLASH控制器
4 Putting it all together
read流程:(涉及miss的情况)
write流程:(写的过程更复杂一些)
将buffer cache和journaling结合在一起,怎么实现?
我的想法是,FLASH cache已经分为两个区域了,而读region不存在日志问题,所以只需要对write区域做缓存和日志的结合。
根据上述写的过程
补充:
读比NAND快,写比NAND慢
能擦除的次数比NAND少
NOR的密度比较小
现在都不用NOR了
NAND FLASH 1page(2kb+64b的校验码),1block=64pages,1plane=2048blocks,1die=4planes,1 package=2dies