双字对齐是什么意思?

时间:2014-08-01 12:22:48

标签: signal-processing fft

什么是双字对齐数据?我正在使用带有c6accel DSP引擎的Ti处理器.fft功能要求样本的输入数据阵列是双字对齐的。双字对齐的确切含义是什么以及如何生成它?

2 个答案:

答案 0 :(得分:1)

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

单词的大小通常与指针的大小相对应,但从技术上讲,这并不是真实的(在PS3 / XB360上不起作用),因此不应该依赖它( source)。确定世界大小的正确方法取决于您使用的操作系统。如前所述:

  

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

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

答案 1 :(得分:1)

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

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