ARMv7未对齐的访问处理和设备/严格排序的存储器

问题描述

ARMv7的LDR(及其他一些)指令通过“分解”对多个对齐访问的访问来支持要加载的未对齐地址(例如,this article中所述)。 另一方面,如果内存被映射为设备或强序存储,则不允许未对齐的访问(将触发异常)。
我的问题是关于这种行为的理由。毕竟,对于这些内存类型,访问也可以细分为多个对齐方式。这是我的猜测:

  1. 设备存储器通常用于映射硬件寄存器,因此每次访问都可能会有副作用。因此,该架构不允许进行“隐藏”访问,而这种访问可能会产生有害的副作用
  2. 严格排序的内存假设严格的访问顺序,因此“隐藏”访问将出乎预期的顺序。

因此,从“预期行为违规”的角度来看,这两个是我推测的理由。还有其他身体上的限制吗?

我的问题的底线是我们有一些内存映射的区域,在物理层面上有对齐要求,但是我不在乎我在问题中列出的任何考虑因素,如果ARM可以很好正在重新排列或破坏访问。因此,我的疑问是,如果将其映射为“普通内存”(从不缓存),是否会遗漏任何可能出现的问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...