【问题标题】:what does Double word alignment mean?双字对齐是什么意思?
【发布时间】:2014-09-24 15:42:47
【问题描述】:

什么是双字对齐数据???。我正在使用 c6accel DSP 引擎开发 Ti 处理器。fft 函数要求样本的输入数据数组是双字对齐的。双字对齐到底是什么意思,我如何生成它?

【问题讨论】:

标签: signal-processing fft


【解决方案1】:

一个字是 CPU 中每个寄存器能够保存的数据量。这取决于所使用的处理器 - 在 32 位系统上,这将是 32 位,在 64 位系统上,这将是 64 位,等等......您的 TI 处理器可能是 16 位或 32 位取决于型号(根据this 猜测)。

单词的大小通常与指针的大小相对应,尽管从技术上讲,这并不能保证是正确的(不适用于 PS3/XB360),因此通常不应依赖 ( source)。确定世界大小的正确方法取决于您使用的操作系统。引用之前的来源:

C 头文件可以定义 WORD_BIT 和/或 __WORDSIZE。

双字的大小就是一个字的大小 * 2。内存 (RAM) 中的数据通常由程序一次提取 1 个字,假设提取从字边界开始。如果不是这种情况,则需要在两个单独的指令中获取字边界两侧的数据,这会导致效率低下,因为需要完成两倍的获取量,并且从 RAM 读取/写入/从 RAM 读取/写入相对较慢(旁注:现代处理器中的缓存在很大程度上缓解了这种情况,尽管这完全是另一个话题)。

【讨论】:

    【解决方案2】:

    对于 TI C6x:双字 = 64 位 确保您的数组从一个 8 字节的倍数的地址开始。

    您可以在声明数组之前使用汇编指令 .align,也可以使用链接器将数组部分链接到对齐的地址。如果您无法控制地址(例如,您有来自 malloc 的内存),请让您的数组在几个字节后开始(到下一个 8 字节边界)。

    【讨论】:

      猜你喜欢
      • 2016-06-11
      • 1970-01-01
      • 2011-05-09
      • 2023-03-25
      • 1970-01-01
      • 2021-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多