免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: asker160

x86在内存不对齐的时候,为什么不会产生总线错误? [复制链接]

论坛徽章:
0
发表于 2011-03-13 16:22 |显示全部楼层
查查用的编译器的选项,可以设为不用对齐,这样估计效率可能地一些。

论坛徽章:
0
发表于 2011-06-24 16:39 |显示全部楼层
内存内部结构设计注定每次只能访问总线位数对齐的地址,指令中允许非对齐访问只是因为CPU或Memory Controller上做了处理,跨对齐的访问硬件上实际会访问两次内存,性能损失不是很明显,但CPU/MC复杂了;有些平台上是用软件中断来做的,这样应用程序也不用关心,但性能明显会差许多。

这个算是设计上的一种权衡吧,也不是严格的RISC或CISC的区别,RISC芯片中的PowerPC系列和x86一样,是允许非对齐访问的,只有连续操作几个寄存器的一些指令(好像是叫lmw还是lwm吧)有这个约束,非对齐会出异常。

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
发表于 2011-06-25 10:25 |显示全部楼层
内存内部结构设计注定每次只能访问总线位数对齐的地址,指令中允许非对齐访问只是因为CPU或Memory Controll ...
Cyberman.Wu 发表于 2011-06-24 16:39



     现在CISC和RISC都结合起来设计了,严格意义上的RISC已经不多了

论坛徽章:
0
发表于 2011-06-27 15:22 |显示全部楼层
回复 13# cjaizss


这个倒是真的,现在大家都更实际了,不去单纯去追求“纯...”了,好用就行。

论坛徽章:
0
发表于 2011-07-18 10:16 |显示全部楼层
intel 手册,AC=1 cr=1,检查边界。
windows下,cr=0
linux下, cr=1,你试一下手动置ac位,不对齐操作肯定sigbus
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP