gpt4 book ai didi

c - 2way缓存关联?我从内存中读取了多少字节?

转载 作者:太空宇宙 更新时间:2023-11-04 02:14:05 25 4
gpt4 key购买 nike

给定代码:

void transpose2(array dst,array src)
{
int i,j;
for ( i=0; i<4; i++) {
for ( j=0; j<4; j++) {
dst[i][j] = src[j][i];
}
}
}

假设:

  • int 是 4 个字节

  • src 数组从地址0开始,dst从地址64

    开始
  • 缓存大小为32字节,开始时缓存为空

假设我有一个大小为 32 字节的缓存,在直写、写入分配和 LRU 下,使用 2way 集合关联方法,其中每个 block 是 8 字节:

当我从内存中读取时,每次迭代从内存中取出多少字节?

4 还是 8

我很确定缓存有 4 个单元或行,每行有 8 个字节。这是正确的吗?

有点令人困惑的是 2way 部分,我认为每种方式都有 4 字节,对吧?如果我错了请纠正我...

然后当我从内存中“取出”一个 block 时,我就是不明白到底有多少字节!!?

提前致谢

罗恩

最佳答案

缓存方式(也称为关联性)不会影响传输发生时传输的数据量; block 大小 block 大小。

关联性只是衡量在缓存中有多少可能的位置可以存储内存中的给定 block 。所以:

  • 对于直接映射缓存(关联性 = 1),内存地址 xyz始终映射到相同的缓存位置。
  • 对于双向缓存,xyz 可以映射到两个缓存位置中的任何一个。
  • 对于全关联缓存,xyz 可以映射到缓存中的任何地方

我真的没有在这里说任何尚未解释的内容,例如维基百科:http://en.wikipedia.org/wiki/CPU_cache#Associativity .

关于c - 2way缓存关联?我从内存中读取了多少字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10128295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com