gpt4 book ai didi

c++ - 如何确保缓冲内存对齐?

转载 作者:IT王子 更新时间:2023-10-28 23:34:08 25 4
gpt4 key购买 nike

我正在使用硬件接口(interface)发送需要我设置 DMA 的数据缓冲区,需要在 64 位边界上对齐。

DMA 引擎要求缓冲区在至少 32 位边界(4 字节)上对齐。为获得最佳性能,缓冲区应在 64 位边界(8 字节)上对齐。传输大小必须是 4 字节的倍数。

我使用 posix_memalign 创建缓冲区,如下面的片段所示。

  posix_memalign ((void**)&pPattern, 0x1000, DmaBufferSizeinInt32s * sizeof(int))

pPattern 是一个指向 int 的指针,并且是我的缓冲区的开始,它是 DmaBufferSizeinInt32s 深。

我的缓冲区是否在 64 位上对齐?

最佳答案

是的,您的缓冲区在 64 位上对齐。它也在 4 KB 边界上对齐(因此为 0x1000)。如果您不想要 4 KB 对齐,请传递 0x8 而不是 0x1000 ...

编辑:我还要注意,通常在编写 DMA 链时,您是通过未缓存的内存或某种非基于缓存的写入队列来写入它们。如果是这种情况,您还希望将 DMA 链与缓存行大小对齐,以防止缓存回写覆盖 DMA 链的开头或结尾。

关于c++ - 如何确保缓冲内存对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1649398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com