开发者社区> 问答> 正文

内存对齐?

内存对齐的原因在于,为了访问未对齐的内存,处理器需要作两次内存访问,请问这两次内存访问怎么解释?能够举个具体的例子?

展开
收起
a123456678 2016-06-06 09:04:50 1752 0
2 条回答
写回答
取消 提交回答
  • 这两次访问不是你发起的,是cpu自己去访问两次。

    2019-07-17 19:27:31
    赞同 展开评论 打赏
  • 首先,明白基础概念:

    内存对齐,通常也称为数据对齐,是计算机对数据类型合法地址做出了一些限制,要求某种类型对象的地址必须是某个值K(通常使2、4或8)的倍数。
    其次,理解数据对齐的目的:

    这种对齐限制简化了处理器与存储器系统之间接口的硬件设计。
    目前,主要软硬件厂商的观点:

    无论是否对齐,IA32等硬件都能正常工作,但建议要对齐数据以提高存储器系统的性能。
    目前,主流操作系统的的对齐策略:

    linux系统2字节数据类型(例如short)的地址必须是2的倍数,而较大的数据类型(例如int、int*、float和double)的地址必须是4的倍数;
    windows系统的策略则更严格,任何K字节基本对象的地址都必须是K的倍数,K=2, 4, 8。特别对于一个double或者long long类型数据的地址应该是8的倍数。
    最后,给出2个小的示例,假设一个处理器与存储器的接口(数据总线)是8字节(即64位),即处理器每次读取/写入的最小单元是8个字节。
    screenshot

    2019-07-17 19:27:31
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载