ARM Cortex-A8:读取一个内存中的字节数是多少?

我正在尝试改进在ARM cortex-a8处理器上运行的图像处理项目。 我正在从内存中访问8位灰度图像数据。在我的函数中,现在我正在逐字节地访问单个像素值。 我认为通过使用NEON我可以通过从内存中一次访问128/8 = 16个字节来改进这一点,然后在我的函数中使用它们。但是在运行更改后的版本时,我发现这实际上比逐字节访问花费更多时间。我认为使用NEON获取内容正成为瓶颈,花费的时间比计算时间长。 ARM Cortex-A8的数据总线大小是多少?在一次内存提取中从内存中访问了多少字节?     
已邀请:
来自Cortex A8 TRM: “您可以将处理器配置为连接到64位或128位AXI互连,为系统设计提供灵活性” 是否有必要,也许你正在将苹果与橙子进行比较?您可以使用ldrd / strd或ldm / stm来获取64位传输,而不是ldrb / strb。 ARM / AXI可以足够智能地向前看,并将较小的传输分组为更大的传输,比如两个32位传输到一个64位。但我不会依赖于此。我只提到它,如果您发现通过更改为ldr / str或ldrd / strd,您不会获得任何性能提升。 您是否隔离(无数据处理)读取或写入循环并尝试字节vs字与双字?可能是从字中提取字节的代码压倒了总线上的节省。 这是什么类型的记忆?这是芯片外还是芯片外,这种内存相对于AXI(ARM)时钟速度的速度是多少? 您是否为此区域启用了数据缓存?如果是这样,它可能是一个静音点,读取的第一个字节将使用最佳数据总线大小进行高速缓存行填充,该高速缓存行中的后续读取将不会到达目标存储器的AXI总线。同样,写入应该只到缓存,然后以更宽的总线优化大小​​到达目标。取决于缓存/写缓冲区的配置方式。     
可能是您遇到了管道停滞。如果您想通读Neon,那么在CPU内核中使用该数据之前会有一些延迟。     

要回复问题请先登录注册