社区
汇编语言
帖子详情
汇编高手来说下内存对齐背后CPU究竟是怎么操作的?比如硬件会有什么优化?
ShanChunZhenZi
2006-09-24 04:52:32
汇编高手来说下内存对齐背后CPU究竟是怎么操作的?比如硬件会有什么优化?
...全文
440
9
打赏
收藏
汇编高手来说下内存对齐背后CPU究竟是怎么操作的?比如硬件会有什么优化?
汇编高手来说下内存对齐背后CPU究竟是怎么操作的?比如硬件会有什么优化?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Unknowm
2006-10-10
打赏
举报
回复
不好意思我理解错了,上面说的不算
Unknowm
2006-10-09
打赏
举报
回复
cache行如果是64个byte的话就是64个byte对齐的,既然64都对齐了,4肯定对齐了
BadEnglish
2006-09-28
打赏
举报
回复
你需要了解一些RAM的硬件,
比如8位的内存片,每个地址有8位数据,
你要第0,第1位还好说,一起出来了,
你要第7,第8位时就麻烦,地址不一样,CPU要打2次地址读2次数局
现在的PC外部内存是64位,双通道内存PC是128位,
混淆出于PC指令按8位编址
Bill1212
2006-09-28
打赏
举报
回复
我补充一下:
另一方面是cache的问题,例如现在P4访问cache以line为单位,每line包括64个byte,假如在运算中不以4byte对齐,就有可能跨越64byte边界。这样cpu要两次访问cache才能拿全数据。
日立奔腾浪潮微软松下联想
2006-09-27
打赏
举报
回复
根本原因在于内存的最小访问单位超过一个字节。
最早的PC机内存是8-bit接口,就没有对齐的问题。
hswxf
2006-09-26
打赏
举报
回复
楼上各位:
如果用一个最根本的说法:对齐的根本在于存储器的偶体与奇体结构,而寻址是按偶地址开始的
。。。。。。。呵呵
不知道对否!
vcPlayer
2006-09-26
打赏
举报
回复
地址线的变动数及频率都减小,相对来说更稳定可靠。
比如20根地址线:如果是字节对齐,则每次都要变更20条线;
如果是字对齐,则只需变换高19条线;依此类推……
日立奔腾浪潮微软松下联想
2006-09-24
打赏
举报
回复
基本上与处理器没关系,是内存控制器的原因(当然现在有的处理器集成了内存控制器)。
读写内存的指令使处理器的RD、WR(通常是低电平有效,所以表示起来应该有上划线,但是我不知道怎么敲出来)引脚有效,并在地址总线上产生地址,引发内存控制器的工作。
内存控制器能一次访问的内存单元是有固定宽度的,比如16-bit、32-bit、64-bit等等。
非对齐的访问可能需要访问两个内存单元,当然慢一些。
事实上,为了简化内存控制器的设计,某些RISC架构的处理器强制地址对齐,否则就产生异常(可以用异常处理来模拟非对齐访问)。
WYlslrt
2006-09-24
打赏
举报
回复
内存对齐,是针对内存访问效率而采取的措施。
对于CPU来说,一个CPU字可以是一个或多个字节,而寻址能力可以为字节,也可以为字或双字。而主存储器一般采用多体方式,使多个存储体并行工作,如一个机器的存储器体系为4体交叉编址,每个体字宽度为1个字节,CPU字为4个字节,寻址能力可以为字节、字和双字。下面是编制过后的地址分布图
体3 体2 体1 体0
------------------------------
3 2 1 0
7 6 5 4
......
4n+3 4n+2 4n+1 4n
-------------------------------
如果CPU从地址0开始读一个双字,那么则可以在一个访存周期里获得。但是如果从地址1开始读一个双字,那么就需要两个访存周期了,第一个周期获得地址1,2,3的数据,第二个周期获得地址4的数据,这样效率就会降低。
因此为了效率,有时需要进行内存对齐,减少访存周期。
C++64位游戏逆向/
汇编
与反
汇编
答:联系老师,老师
会
教你
优化
CPU
、
优化
内存,使你的电脑能够正常跟随课程学习。6.问:购买后,课程能学习多久?答:课程因为存在版权,所以不能翻录。但是购买后,至少5年都能够随到随学的,课程购买页面有描述说明...
轻松搞定
内存对齐
比如在32位
cpu
下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。 二、为什么要字节对齐 需要字节对齐的根本原因在于
CPU
访问数据的效率问题。假设上面整型变量的地址不是自然对齐,比如为0x...
内存对齐
问题
内存对齐
可能很多程序员接触不到,也许只在面试的偶尔
会
被问到过,但是也只是背背固定的公式,大概知道怎么计算,也能知道大致的原理,就是数据不对齐,取数次数要变多,但是只是理解到这种程度还不够,目前intel ...
计算机中的
内存对齐
以及内存的堆栈分配原理
在大多数低层程序设计中,由于内存分配与
内存对齐
问题所带来的bug所占比重非常大。本文对内存分配中的分配空间类型、作用、方法、...
操作
系统的内存分配问题与
内存对齐
问题对于低层程序设计来说是非常重要的,对内存
为什么需要
内存对齐
以及对齐规则的简单分析
首先需要知道的是:
CPU
每次从内存中取出数据或者指令时,并非想象中的一个一个字节取出拼接的,而是根据自己的字长,也就是
CPU
一次能够处理的数据长度取出内存块,比如32位处理器将取出32位也就是4个字节的内存块...
汇编语言
21,459
社区成员
41,600
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章