我看了一些cache的资料。很多都讲了当cache 命中hit或者缺失 miss时候,该怎么做的问题,但是,对于cache为什么会
miss以及如何判断cache 缺失miss还是命中hit的问题,很少有人提及,不知道有没有人能分享下,谢谢!
1.
cpu一上电,从第一条取指令开始的时候,所有cache中包括L1P cache L1D cache和L2 cache中的内容是不是都是0?
2.
我怎么知道cpu要取的命令到底在哪里?是在L1p cache 中 还是在L2 cache中?还是在SDRAM或者DDR 主存中?
Tony Tang:
#1. Cache的工作原理不是按内容检索,而是按地址检索的。至于一上电Cache的内容是什么都没有关系,CPU没有访问物理内存之前,Cache中没有相应地址的记录,所以都是从物理内存取数据,而不是从Cache.
#2. 这是由CPU自动完成的。如果取的命令在Cache中,CPU则从Cache中取,或者从物理内存取,并将同一个line取到Cache中。