CPU Cache的数据写入
CPU和内存的访问性能越差越大,于是在CPU内部嵌入CPU Cache(高速缓存)。
CPU Cache由Cache Line组成,Cache Line由头标志Tag+数据块Data Block组成。
如果数据写入Cache,内存和Cache相对应的数据将不同,需要同步,什么时机才把Cache中的数据写回到内存呢?
两种针对写入数据的方法:写直达(Write Through),写回(Write Back)
写直达
保存内存与Cache一致性最简单的方式,把数据同时写入内存和Cache中
写入前会先判断是否已经在CPU Cache里面:
如果数据已经在Cache里面,先将数据更新到Cache里面,再写入到内存里面;
如果数据没有在Cache里面,就直接把数据更新到内存里面。
写回
既然写直达由于每次操作都会把数据写回内存,导致影响性能,为了减少数据写回内存的频率,出现了写回方法。
当发生写操作时,新的数据仅仅被写入到Cache Block里,只有当修改过的Cache Block[被替换过]才需要写到内存里,减少了数据写回内存的频率,提高性能。
- 当发生写操作时,数据已经在CPU Cache里的话,把数据更新到CPU Cache里,标记CPU Cache里的这个Cache Block为脏(Dirty)的,代表这个时候,CPU Cache里面的Cache Block的数据和内存是不一致的,这种情况不用