给全局变量自己的缓存行

时间:2019-05-02 00:20:47

标签: c

我想在C程序的自己的缓存行中放置一个静态全局变量(32位整数)(我也想对一个extern全局变量执行此操作)。做这个的最好方式是什么?我应该在结构中定义全局变量并填充该结构吗? align指令被编译器忽略。

这是为了提高性能,因为全局性由一个线程使用,并且在其之上和之下定义了其他变量,其他物理内核上的其他线程也使用该变量。我宁愿不创建结构,但不确定如何执行此操作。我正在使用GCC 7.4.1,并正在为AArch64进行编译。

1 个答案:

答案 0 :(得分:1)

您只能不能仅使用C手动将其放置在缓存行中(正如我从标记中所怀疑的)。请注意,某些变量不能放在此处(例如,带有volatile修饰符的变量);没有便携式方式可以完成此任务。