结构体为什么要内存对齐,为了减少cpu内存读取的次数。
那么为什么会减少cpu内存读取的次数呢?
网上很多说法是因为cpu读取数据的粒度是4个字节,所以如果不对齐就会读两次。
我理解的是cpu读取内存是通过段指针+偏移指针读取的,如果数据跨段了,那么才需要读两次?
学习汇编的时候知道cpu会根据指令确定读取内存的字节数,并不一定是一次读取四个字节,读一个字节也可以。
到底哪个是正确的呢?
结构体内存对齐的原因?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- threenewbee 2020-06-15 10:33关注
cpu读取内存是通过段指针+偏移指针读取
你这个是早期dos下16bit计算机访问20bit地址,早就过时了。现在的cpu+操作系统,都是平坦寻址
cpu会根据指令确定读取内存的字节数,并不一定是一次读取四个字节,读一个字节也可以。
这说的是逻辑层面的,物理层面,可不可以是一回事,是否充分利用硬件资源了是另一回事。如果访问一个字节,也可以但是会慢,因为地址线就是32/64位的,你访问1个字节,等于一辆卡车拉货,没有拉满。
司机虽然也能帮你拉,但是效率低。解决 无用评论 打赏 举报
悬赏问题
- ¥15 求帮生成一个lattice diamond的许可证
- ¥15 大一前端新生求教学解答
- ¥15 如何制作一个可以查看“网游有序列的装备词条”的软件/插件
- ¥15 CS2打5E与完美天梯匹配会与服务器断开连接(黑框没标明具体原因)
- ¥15 利用cst反推材料电磁参数,推出想x,y,z方向的相对介电常数与磁导率
- ¥15 求帮助!用赛灵思FPGA XC7A35T对一个频率50MHz的数字信号读取高低电平,只用HR bank普通单端io进行采样可以吗
- ¥15 训练准确率100%,测试准确率只有50%
- ¥15 grafana创建dashhabord提示no data sources of type Prometheus Alert
- ¥15 python用arima时间序列法预测不出结果 急
- ¥15 思科交换机如何恢复配置