首页 > 解决方案 > 缓存大小和阻塞循环

问题描述

参考以下代码演示问题:

for (i = 0; i < M; i++) {
   for (j = 0; j < N; j++) {
      dst[i][j] = src[i][j];
   }
}

所以只是简单的行主要矩阵复制。将有 MxN 加载和 MxN 存储分别缓存。如果 M 大于缓存块大小 K,M > K(让我们把它称为“通用”而不是 L1/L2 等),那么即使是单行 src[i][j] 也无法放入缓存中堵塞。缓存控制器会将一行分解为多个缓存块/行吗?假设直接映射缓存并假设我们不会在代码中将 src[i][j] 分解成更小的块,以便它们适合缓存块。

当然,即使只是从 src[i][j] 中取出 M 中的 K,这个复制操作仍然有效。但只是想知道在这种情况下发生了什么。

标签: caching

解决方案


推荐阅读