前面的两篇博客介绍了cache的功能,cache system的组成,cache structure的结构组成,以及 cache 的三种工作方式。通过前面的介绍,我们可以继续的研究cache 中数据的工作机制,这才是我写这篇博客的根本目的。
下面我们讨论一下利用cache来保持数据的consistency
valid copy是指相对于permanent storage,一个data item的latest version,invalid copy就是non-latest version
register interest in a data item:
通过上图,我们可以看到,data item x ,对应的vector index value 2 ,其标志位为V标识着该data item 为valid copy
同样,connection B 中的 data
item z ,对应的vector index value 4 ,其标志位为V标识着该data item 为valid copy
下面deregister interest in a data item:
一旦 connection A update data item Z以后,
connection A会write update data item到 cache structure,在写入的同时,
它还会deregister interest for connection B,这样,
connection B 在update data item Z 的时候,测试发现 vector index value
4 for data item Z 为invalid ,因此会refresh 该data item 为 z',从而获取了 data item latest 版本,保持了数据的一致性。
cast out process 本身只会写changed data item,但是即使完成 data item,data item本身并没有从cache structure中delete。
在定义cast class的时候,是将cast out frequency 类似的 data item group到一起,这样便于管理。
下面我们讨论一下 storge 的reclaim :
我们知道,当我们write data item到cache structure的时候,需要建立对应的directory entry,data item,这些都是需要storage的。但是有时候当空间不够的时候,system 本身就会回收空间,以满足用户的需求。
需要注意的是,changed data item以及 cast out locked data item 所对应的 空间是不能被reclaim的。
前面提及data item在完成 cast out以后,data item本身是不被delete的,同时在cast out的时候,每一个data item都会被assigned 到一个cast out class,cast out class 会对这些data item进行queue,queue的管理使用的算法是LRU,一旦发现空间不走,需要回收storage,system就会reclaim queue least used data item.
断断续续写了这么,整体上对cache structure的构成以及各个部分的功能进行了一个简单的介绍,这里的介绍仅是针对cache的介绍,并没有介绍到对应的DSG中,这个对应的过程等熟悉后在补上。
阅读(2059) | 评论(0) | 转发(0) |