脏数据缓存丢失和干净数据缓存丢失之间有什么区别?
我在我的CPU手册中找到了它们的计数器,并且想知道哪一个是正确的方法来说明代码中数据访问的效率。
在我当前的程序中,干净的遗漏= 102271,而脏的遗漏= 1323。
发布于 2018-09-20 11:43:55
按照手册的要求,数据缓存脏漏用“缓存回写/驱逐是必需的”来描述。
这是不好的措辞。我希望更有可能的意图是,如果这些缓存遗漏事件中的一行被修改,因此必须写到内存中,那么其中的一个事件就被认为是脏的。这与一个干净的缓存遗漏之间的区别是,一个干净的遗漏不是没有驱逐一行,就是驱逐了一个没有被修改的行,因此可以通过丢弃它而不把它写到内存中来驱逐它。如果这种解释是正确的,那么如果简单地说“需要缓存回写”,描述就会更加清晰。
如果注释是字面上的,意思是“/”,或者,“那么,如果一个缓存错过事件必须将数据写到内存中,或者不得不删除一行,那么它就被认为是脏的。那么,一个干净的缓存丢失将是一个缓存丢失,而不需要删除一行。这是一种不太可能的解释,因为典型设计的缓存只有在缓存初始化且所选缓存集尚未填充之后,才需要排除一行以腾出空间引入新行,或者如果行已手动从缓存中移除。通常在缓存中保留行,直到强制驱逐为止,因此缓存的正常状态是每个缓存集都是满的。在这个意义上的“干净缓存错过”,干净缓存丢失将是罕见的,而一个计数器为他们通常不会是有用的。此外,这一措辞将是多余的,因为当由于遗漏而出现缓存回写时,也存在驱逐,因此“缓存回写/驱逐是必需的”在逻辑上等同于“驱逐是必需的”。
https://stackoverflow.com/questions/52419573
复制相似问题