Caching 区别于;“清除数据缓存未命中”;及;脏数据缓存未命中“;

Caching 区别于;“清除数据缓存未命中”;及;脏数据缓存未命中“;,caching,cpu-cache,Caching,Cpu Cache,脏数据缓存未命中和干净数据缓存未命中之间有什么区别 我在我的CPU手册中找到了这两个计数器,我想知道哪一个是正确的度量标准,可以说明代码中数据访问的效率 在我当前的程序中,干净未命中=102271,而脏未命中=1323 什么时候会发生清除未命中,是否会在清除未命中时从内存加载数据 什么时候会发生严重失误?(编辑:事实上这很清楚) 根据,数据缓存脏未命中用“需要缓存写回/逐出”来描述 这是不好的措辞。我认为更可能的意图是,如果发生移出的行被修改,因此必须写入内存,则这些缓存未命中事件中的一个被认

脏数据缓存未命中和干净数据缓存未命中之间有什么区别

我在我的CPU手册中找到了这两个计数器,我想知道哪一个是正确的度量标准,可以说明代码中数据访问的效率

在我当前的程序中,干净未命中=102271,而脏未命中=1323

  • 什么时候会发生清除未命中,是否会在清除未命中时从内存加载数据
  • 什么时候会发生严重失误?(编辑:事实上这很清楚)
根据,数据缓存脏未命中用“需要缓存写回/逐出”来描述

这是不好的措辞。我认为更可能的意图是,如果发生移出的行被修改,因此必须写入内存,则这些缓存未命中事件中的一个被认为是脏的。这与干净的缓存未命中之间的区别在于,干净的未命中要么没有逐出一行,要么逐出一条未修改的行,因此只需丢弃该行而不将其写入内存即可逐出。如果这种解释是正确的,那么如果只是说“需要缓存写回”,说明就会更清楚

如果注释按字面理解,带有“/”的意思是“或”,则表示如果缓存未命中事件必须将数据写入内存或必须逐行,则该事件被视为脏事件。然后,干净缓存未命中将是不必逐出行的缓存未命中。这是一种不太可能的解释,因为只有在缓存已初始化且选定缓存集尚未填充,或者缓存行已手动从缓存中逐出后,典型设计的缓存才不必逐出一行以腾出空间引入新行。通常,缓存线会一直保留在缓存中,直到被强制逐出,所以缓存的正常状态是每个缓存集都已满。在这种“干净的缓存未命中”的意义上,干净的缓存未命中将是罕见的,并且为它们设置计数器通常不会有用。此外,该措辞是多余的,因为当由于未命中而存在缓存回写时,也存在逐出,因此“需要缓存回写/逐出”在逻辑上等同于“需要逐出”。

Per,数据缓存脏未命中用“需要缓存回写/逐出”来描述

这是不好的措辞。我认为更可能的意图是,如果发生移出的行被修改,因此必须写入内存,则这些缓存未命中事件中的一个被认为是脏的。这与干净的缓存未命中之间的区别在于,干净的未命中要么没有逐出一行,要么逐出一条未修改的行,因此只需丢弃该行而不将其写入内存即可逐出。如果这种解释是正确的,那么如果只是说“需要缓存写回”,说明就会更清楚


如果注释按字面理解,带有“/”的意思是“或”,则表示如果缓存未命中事件必须将数据写入内存或必须逐行,则该事件被视为脏事件。然后,干净缓存未命中将是不必逐出行的缓存未命中。这是一种不太可能的解释,因为只有在缓存已初始化且选定缓存集尚未填充,或者缓存行已手动从缓存中逐出后,典型设计的缓存才不必逐出一行以腾出空间引入新行。通常,缓存线会一直保留在缓存中,直到被强制逐出,所以缓存的正常状态是每个缓存集都已满。在这种“干净的缓存未命中”的意义上,干净的缓存未命中将是罕见的,并且为它们设置计数器通常不会有用。此外,该措辞是多余的,因为当由于未命中而发生缓存回写时,也会发生逐出,因此“需要缓存回写/逐出”在逻辑上等同于“需要逐出”。

哪个CPU?什么手册?英飞凌的tricore。第12.10章:哪个CPU?什么手册?英飞凌的tricore。第12.10章。