Caching 写入-不写入-分配惩罚计算

Caching 写入-不写入-分配惩罚计算,caching,memory,Caching,Memory,我正在考虑一个直写,无写分配(无写分配)缓存。我通过以下定义理解这些: 直写:信息同时写入缓存中的块和较低级别内存中的块 无写分配:在写未命中时,块在主内存中修改,而不加载到缓存中 tcache:访问第一级缓存所需的时间 tmem:访问内存中的某些内容所需的时间 我们有以下几种情况: 读取命中:在缓存中找到值,只需要tcache 读取未命中:在缓存中找不到值(tcache+tmem) 写入命中:写入缓存和主内存(tcache+tmem) 写入未命中:直接写入主内存(tcache+tmem)

我正在考虑一个直写无写分配(无写分配)缓存。我通过以下定义理解这些:

  • 直写:信息同时写入缓存中的块和较低级别内存中的块
  • 无写分配:在写未命中时,块在主内存中修改,而不加载到缓存中
  • tcache:访问第一级缓存所需的时间
  • tmem:访问内存中的某些内容所需的时间
我们有以下几种情况:

  • 读取命中:在缓存中找到值,只需要tcache
  • 读取未命中:在缓存中找不到值(tcache+tmem)
  • 写入命中:写入缓存和主内存(tcache+tmem)
  • 写入未命中:直接写入主内存(tcache+tmem)
for write-through/no-write-allocate表明,即使没有填充缓存,我们也必须首先遍历缓存。为什么,如果我们知道在这种情况下写操作永远不会填充缓存,那么我们不能只花费tmem来执行操作,而不是(tcache+tmem)?似乎我们不必要地花费额外的时间来检查一些我们知道不会更新的东西


我唯一的猜测是Paul A.Clayton对A的评论,关于这种类型的缓存是我们仍然必须在写操作时与缓存交互的原因。但即使这样,我也不明白为什么缓存更新和内存更新不能并行完成

任何查询都可以。但是在您的模型中,搜索和写入缓存都需要时间。这实际上是一个非常低质量的近似值,因为搜索和写入是两个不相关的概念。有时我们只做搜索而不写。在任何情况下,都无法将该时间减少到零,因为至少需要搜索来检测缓存未命中。出于何种原因,目前尚不清楚您打算如何将写未命中减少为仅
tmem
。那是不可能的。让我试着重新措辞。我同意您的观点,有必要搜索并写入缓存,因为当缓存命中时,直写必须更新缓存(以及内存)。然而,无论命中与否,我们都会写入内存。为什么我们不能并行地执行这些操作,这样我们的总时间就是
MAX(tcache,tmem)
,我假设它只是减少到
tmem
,因为这将是较慢的时间。