c - 内存对齐处理器是否依赖、数据依赖或高速缓存行长度依赖?

标签 c caching double memory-alignment

我正在 C 中动态声明一个 double 组,目标是具有缓存的 Intel Sandy Bridge E5-2670 处理器使用 _mm_malloc() 的行大小为 64 字节

我的问题是:

  1. 数组应该8 字节对齐(即 double 的大小)吗?
  2. 由于缓存行大小为 64 字节,数组是否应该64 字节对齐
  3. 数组是否应该32 字节对齐(Saini 等人在 AVX 指令的论文中提到)?

最佳答案

好的,那么 SSE 的 16 字节对齐,AVX、AVX2 的 32 字节对齐(不是必需的,但它使生活更轻松,并且可以在性能上产生微小的差异)。 – 保罗·R

关于c - 内存对齐处理器是否依赖、数据依赖或高速缓存行长度依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36035705/

相关文章:

c++ - 你怎么能把一组数字变成大部分的整数呢?

c - 如何标记/拆分包含 C 中的天数和随机数的 .csv 文件中的数据?

c++ - O(log n) 中的广度优先搜索

caching - 应用程序缓存存储项目有空响应?

c++ - 当函数几乎为 "flat"时,牛顿-拉夫森方法不可能实现

java - 如何显示整个 double 值?

前向模式的计算效率自动与数字与符号微分

c - 在 C 中使用没有值的#define

angular - 在 Angular 中缓存图像

java - 使用结构/类来增加缓存空间局部性?