完全关联缓存
Fully Associative Cache
我试图找出一个问题,在那里我需要看看有多少缓存丢失发生以下嵌套循环
for i=0; i < 32 ; i++
for j=0; j < 32; j++
sum += arr[i][j];
我有一个完全关联的缓存,它有16个缓存行,每个缓存行可以存储32个单词。缓存最初是空的,arr[0][0]映射到第一条缓存行
现在根据我的理解,总共会有32次失误。最初,当请求发出时,缓存是空的,因此它被视为错过,根据完全关联缓存,所有块都被填充,然后应用LRU。
我在这里有点困惑,这里可以使用一些指导
假设一个整数存储在一个单词中
让我们从1st内存访问开始。arr[0][0]
。它将导致一个缺失,这是强制缺失,这将把32个整数带进缓存。为了方便我们,我们将在以后的访问中访问这些确切的内存位置。从arr[0][0]
到arr[0][31]
现在,当我们访问arr[1][0]
时,我们访问的是第33个位置,它不在我们的缓存中。这又是一次失误。
一般来说,你每访问32个值就会有一个错误请注意,这只是针对你所展示的那种循环:
for i=0; i < 32 ; i++ for j=0; j < 32; j++ sum += arr[i][j];
这里的内存访问是连续的。此外,正如@Peter Cordes在评论中所说,在特定情况下,完全关联缓存将以与直接映射缓存完全相同的方式运行。
相关文章:
- cmake更新缓存的变量
- 试图对缓存进行跨步测试,但程序并没有结束
- 关联容器的下界复杂性:成员函数与非成员函数
- 缓存std::数组的选定元素,并在c++中自动保持其一致性
- 通过ccmake在cmake中缓存依赖选项
- std::future_error:无关联状态
- 查找自动生成键并具有线性内存消耗的小型关联数组
- 如何在 OpenCV 中将图像与另一个图像相关联
- 删除提升存档对象也会删除与其关联的流?
- 变量如何以及在何处可能没有C++关联的名称?
- 将正态随机变量与任意 RHO(corrcoef) 相关联
- 使用宏扩展的泛型:为什么指令缓存使用不当?
- 如何使缓存线程安全
- 存储指令是否会阻止缓存未命中的后续指令?
- 缓存局部性与函数调用
- 试图(稍微)概括C++模板.关联容器键:值反转
- 如何打印源文件中与 GDB 中的程序流关联的所有行号
- 关联集缓存低估命中率
- 完全关联缓存
- 实现一个倾斜关联数据缓存c++