相同的数据结构可以共享多于1个缓存行

时间:2018-02-18 19:58:26

标签: linux assembly x86-64 cpu-cache

我是低级编程的新手,我目前的工作是关于Scala开发。但我只是用一些东西(可能是非常愚蠢的问题)对自己提出质疑。我无法使用谷歌或常用的分析工具找到答案。

Integer(或任何其他数据类型4字节大小)可以共享多个L1缓存行吗?我正在使用Haswell

据我所知...是的,它可以。请考虑以下代码:

;allocate 100 bytes with mmap
mov [rax + 62], dword -1 ; we misaligned the Integers which now has to share 2 cache lines.
mov ebx, [rax + 62] ; should result in 2 cache hit

由于缓存行是64B对齐的,我们将int放在64b-aligned-address + 62位置,因此int的2个字节位于1个缓存行中,另外2个位于另一个缓存行中。

我的理解是否正确?如果没有,请你帮我理解它是如何工作的。我不是在问缓存一致性。我的程序在单个线程中的单个核心上运行。

0 个答案:

没有答案