当CPU写主存储器中的一个数据时,会先在高速缓存中找这个数据所在的地址是否映射在高速缓存中,如果在,就改到高速缓存中,如果不在,就在主存储器中找这个数据所在的块,复制到高速缓冲中,然后改变该值,值改变后,这个数据地址块就置为dirty,表示这个地址的数据已经被修改过了,高速缓冲中的数据与主存储器中的数据不一致了。
当CPU这样就绪访问其他不再高速缓存中的数据时,也这样操作,这样访问着访问着高速缓冲就满了,然后CPU再访问这样的数据时,就把高速缓冲中很久都不用的数据块删掉了。但如果CPU发现这个待删掉的数据块已经dirty了,就得把这个数据块写回到主存储器中。
CPU高速缓冲好像还有超时机制,超过一定时间会把dirty的数据块写回主存储区 |