Tag: processor

包容性还是排他性? 英特尔酷睿IvyBridge处理器中的L1,L2缓存

我使用的是Intel Core IvyBridge处理器,Intel(R)Core(TM)i7-3770 CPU @ 3.40GHz(L1-32KB,L2-256KB,L3-8MB)。 我知道L3是包容性的,并且在多个核心之间共享。 我想知道关于我的系统的以下内容 第1部分 : L1是包容性还是排他性? L2是包容性还是排他性? 第2部分 : 如果L1和L2都包含在内,那么为了找到L2的访问时间,我们首先声明一个大小超过L2缓存(256KB)的数组(1MB),然后开始访问整个数组以加载到L2缓存中。 之后,我们从开始索引到结束索引访问数组元素,步长为64B,因为缓存行大小为64B。 为了获得更准确的结果,我们重复这个过程(在索引,开始端访问数组元素)多次,比如100万次并取平均值。 我理解为什么这种方法给出了如下正确的结果 – 当我们访问大小超过L2高速缓存大小的数组时,整个数组从主存储器加载到L3,然后从L3加载到L2,然后L2加载到L1。 最近访问的是整个arrays的最后32KB在L1中。 由于包含属性和高速缓存一致性,整个arrays也存在于L2和L3高速缓存中。 现在,当我开始从启动索引再次访问数组时,该索引不在 L1缓存中,而是在L2缓存中,因此将存在缓存未命中,并且它将从L2缓存加载。 这样,整个arrays的所有元素都需要更长的访问时间,总的来说,我将获得整个arrays的总访问时间。 为了获得单一访问权限,我将取总访问量的平均值。 我的问题是 – 我是否正确? 提前致谢 。