为了防止错误共享,我想将数组的每个元素与缓存行对齐。所以首先我需要知道缓存行的大小,所以我为每个元素分配了相应的字节数。其次,我希望数组的开头与缓存行对齐。
我正在使用 Linux 和 8 核 x86 平台。首先我如何找到缓存线的大小。其次,如何与 C 中的缓存行对齐。我使用的是 gcc 编译器。
因此,例如,假设高速缓存行大小为 64,该结构将如下所示。
element[0] occupies bytes 0-63
element[1] occupies bytes 64-127
element[2] occupies bytes 128-191
依此类推,当然假设 0-63 与高速缓存行对齐。