【问题标题】:Purpose of index bits in CPU cachingCPU 缓存中索引位的用途
【发布时间】:2016-06-03 06:59:22
【问题描述】:

当前Wikipedia article 关于 CPU 缓存的内容如下:

索引描述了数据在哪个缓存行(哪个缓存行) 已放入。

我怀疑这是真的,因为据我了解缓存的工作方式,索引位选择可以存储项目的集合。一组由多个缓存行(又名缓存块)组成。然后使用标记位来识别高速缓存行。

我说的对吗?

【问题讨论】:

  • 您引用的页面上的“示例”部分解释了索引如何描述哪个缓存行(地址可以缓存的可能缓存行)实际保存数据。
  • 我投票结束这个问题,因为这是关于硬件细节,与编程无关
  • 我知道这个问题可能被称为题外话,但是哪个 stackexchange 网站更适合?

标签: caching cpu-cache


【解决方案1】:

您对 2 种不同的映射方案感到困惑。 set 一词仅在使用的映射是 set-associative 时使用。如果使用的映射是直接映射,则没有任何意义。您在问题中提供的链接中清楚地解释了这些不同的映射。

请注意声明

索引描述了数据在哪个缓存行(哪个缓存行) 已放入。

是用于直接映射方案,其中索引字段中的位数描述了缓存中的行数。这意味着如果索引字段是 x 位,那么缓存内存中有 2 次方 x 行。并且偏移量用于定位我们要在特定行中读取哪个字节,以防我们的内存是字节可寻址的。

对于set-associative方案,我们的整个高速缓存被划分为集合。 index 字段现在不再存在,而是分为两个字段,即 setoffset,其中 set 描述了我们关注的集合并且 offset 用于指定我们想要的集合中的哪个字节,以防内存是字节可寻址的。

【讨论】:

  • 由于直接映射只是集合关联方案(1 路集合关联)的一种特殊情况,我们正在考虑由一个集合组成的缓存,该集合包含所有缓存行。出于这个原因,我在谈论直接映射时使用了 set 这个术语,我感到很困惑。感谢您的澄清。
猜你喜欢
  • 1970-01-01
  • 2010-10-15
  • 2016-03-26
  • 2016-03-16
  • 2019-03-15
  • 2015-11-26
  • 1970-01-01
  • 1970-01-01
  • 2015-06-28
相关资源
最近更新 更多