专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
DSP
【VS开发】【DSP开发】地址对齐
2019-07-13 09:54
发布
生成海报
站内文章
/
DSP
12359
0
1070
组成原理说明------地址对齐
1.引入
1.1
如下面的代码,定义了三个变量,int,char,int,并输出他们的十六进制的内存地址。
#include
int
main() {
int
a;
char
b;
int
c; printf(
"
a:%x b:%x c:%x
"
,&a,&b,&c);
//
输出: a:22ff1c b:22ff1b c:22ff14
return
1
; }
1.2图示分析上述代码
代码中为定义的变量a,b,c分配了内存单元,分配内存单元是从大地址开始分配的,可见a的内存地址大于b的地址。(除非分配的内存单元循环了。从0跳大了最大,又开始新的一轮减小) int占用4个字节,char占用1个字节。 从代码中可以看出为三个连续定义的变量的内存分配是不连续的。这就是因为地址对齐的原因。
2.地址对齐概念
地址对齐其实就是CPU设计中的一个
时空权衡
,这里采用的是空间换时间的。主要的解决问题是如何能过快速的读取给定的一个变量。 目前的主流计算机有32位,64位这是地址线,一般数据线与地址线条数相同。 如果放置数据时不考虑地址对齐,32位的CPU读取一个4字节的int最少需要一次内存访问,最多需要2次访问内存。下图中左面,取一个int要两次内存访问,而右边的只需要一次内存访问。
上面的左图为什么是2次访问内存呢?这个需要用组成原理说明。
3.计算机组成原理解释地址对齐
这里使用32位说明。16位的80x86,和目前流行的64位也是一样的。 32位字长的机器,能一次访问的数据是32bits。 如下图所示:32条数据线,分成了4组,这样就可以使用字节编码,最小的访问内存单元为一个字节。 同样给出一个32位地址最多可以访问32位的数据。 若一个int数据保存在32位机器中如2中的左图所示,一次只能访问到2字节数据,所以需要2次内存访问;若一个int数据保存在32位机器中如2中的右图所示,给出一次地址就能够访问整个int数据。
4总结
许多RAM都采用地址对齐,加速CPU。 采用地址对齐保存数据对应的地址如下:
Ta的文章
更多
>>
如何用CAM350测量pcb板
0 个评论
【VS开发】【DSP开发】地址对齐
0 个评论
单片机程序下载方式ISP、IAP
0 个评论
热门文章
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮