Caching CPU缓存中索引位的用途

Caching CPU缓存中索引位的用途,caching,cpu-cache,Caching,Cpu Cache,当前关于CPU缓存的信息如下所示: 索引描述了存储数据的缓存行(缓存线) 已经投入使用 我怀疑这是真的,因为就我对缓存工作方式的理解而言,索引位选择了可以存储项的集合。一个集合由多个缓存线(又称缓存块)组成。然后,标记位用于标识缓存线 我说得对吗?你把自己和两种不同的映射方案搞混了。术语集仅在使用的映射是集关联时使用。如果使用的映射是直接映射,则没有意义。您在问题中提供的链接中清楚地解释了这些不同的映射 请注意,声明 索引描述了存储数据的缓存行(缓存线) 已经投入使用 用于直接映射方案,其中索引

当前关于CPU缓存的信息如下所示:

索引描述了存储数据的缓存行(缓存线) 已经投入使用

我怀疑这是真的,因为就我对缓存工作方式的理解而言,索引位选择了可以存储项的集合。一个集合由多个缓存线(又称缓存块)组成。然后,标记位用于标识缓存线


我说得对吗?

你把自己和两种不同的映射方案搞混了。术语仅在使用的映射是集关联时使用。如果使用的映射是直接映射,则没有意义。您在问题中提供的链接中清楚地解释了这些不同的映射

请注意,声明

索引描述了存储数据的缓存行(缓存线) 已经投入使用

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


对于集合关联方案,我们的整个缓存内存被划分为集合。字段索引现在不再存在,但它被分为两个字段,即集合偏移,其中set描述了我们关注的集合,offset用于指定我们想要的集合中的哪个字节,以防内存是字节可寻址的。

您将自己与两种不同的映射方案混淆了。术语仅在使用的映射是集关联时使用。如果使用的映射是直接映射,则没有意义。您在问题中提供的链接中清楚地解释了这些不同的映射

请注意,声明

索引描述了存储数据的缓存行(缓存线) 已经投入使用

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


对于集合关联方案,我们的整个缓存内存被划分为集合。字段索引现在不再存在,但它被分为两个字段,即集合偏移量,其中集合描述了我们关注的集合,偏移量用于指定集合中的哪个字节,以防内存可寻址。

示例您引用的页面上的一节解释了索引如何描述哪个缓存行(地址可以缓存在其中的可能缓存行)实际保存数据。我投票将此问题作为主题外的问题结束,因为这是关于硬件细节的,与编程无关。我知道此问题可能被称为主题外的,但是哪个stackexchange站点更适合?您引用的页面上的“示例”部分解释了索引如何描述哪个缓存行(地址可以缓存到的可能缓存行中)实际保存了数据。我投票关闭这个问题,因为这是关于硬件的详细信息,与编程无关我知道这个问题可能被称为离题,但什么stackexchange站点更适合?因为直接映射只是集合关联方案(单向集合关联)的一个特例,我们考虑的是一个由一个集合组成的缓存,其中包含所有缓存线。由于这个原因,我在谈论直接映射时使用了术语集,我感到困惑。感谢您的澄清。由于直接映射只是集合关联方案(单向集合关联)的一个特例,我们考虑的是一个由一个集合组成的缓存,该集合包含所有缓存线。由于这个原因,我在谈论直接映射时使用了术语集,我感到困惑。谢谢你的澄清。