组成原理说明------地址对齐

1.引入

  1.1如下面的代码,定义了三个变量,int,char,int,并输出他们的十六进制的内存地址。

#include<stdio.h>
int main()
{int a;char b;int c;printf("a:%x  b:%x  c:%x\n",&a,&b,&c);  //输出: a:22ff1c  b:22ff1b  c:22ff14return 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。

  采用地址对齐保存数据对应的地址如下: 

转载于:https://www.cnblogs.com/huty/p/8518509.html

【VS开发】【DSP开发】地址对齐相关推荐

  1. DSP开发板选择问题

    这两天看了国内各个厂家的DSP开发板,总结一下,希望给同样需要的人一点经验和总结. 因为我是做通信系统,所以需要TI公司的C6000系列处理器. 目前C6000系列性能最强的是C66X系列,该系列的C ...

  2. 用于多核DSP开发的核间通信

      TI的多核DSP以TMS320C6678为例,它是多核同构的处理器,内部是8个相同的C66x CorePac.对其中任意一个核的开发就和单核DSP开发的流程是类似的.   但是如果仅仅只是每个核独 ...

  3. C6678多核DSP开发——hello world

    C6678多核DSP开发--hello world 本篇学习笔记主要记录在C6678实验板上实现打印"hello world"信息功能,主要目的是熟悉CCS开发环境和硬件调试过程. ...

  4. 【DSP开发】【Linux开发】基于ARM+DSP进行应用开发

    针对当前应用的复杂性,SOC芯片更好能能满足应用和媒体的需求,集成众多接口,用ARM做为应用处理器进行多样化的应用开发和用户界面和接口,利用DSP进行算法加速,特别是媒体的编解码算法加速,既能够保持算 ...

  5. 广州创龙TMS320C6748 DSP开发板免费申请试用

    2019独角兽企业重金招聘Python工程师标准>>> 1.广州创龙TMS320C6748 DSP开发板免费申请试用,历史上例程最丰富的C6000 DSP开发板,不容错过. 申请链接 ...

  6. 关于DSP开发的步骤

    1.开发环境CCS(CodeCo mposerStudio)是TI公司开发的一个完整的DSP集成开发环境.由于TI的DSP使用非常广泛,使得CCS也就成为使用最为广泛的DSP开发软件之一.现在,所有T ...

  7. 老罗android开发视频教程 下载地址

    感觉老罗android开发视频教程讲得挺好挺全面的,适合新手学习.分享 老罗android开发视频教程 下载地址: 电驴:http://www.verycd.com/topics/2929580/ 老 ...

  8. 企微开发SDK下载地址

    企业微信开发SDK下载地址: 已迁移到github上去了,覆盖C/C#/GO/Java/JavaScript/PHP/Python/Ruby/Other 企业微信开发者中心 开源项目与代码示例 - 接 ...

  9. 修改ARM开发板IP地址

    修改ARM开发板IP地址 转载自:https://www.linuxidc.com/Linux/2011-06/36728.htm 要修改ARM开发板的IP,如果是yaffs2文件,可以 1.首先要修 ...

最新文章

  1. Fundamental Research:根系分泌物通过调控土壤微生物影响碳周转的机理
  2. AI程序员,所有码农的梦想
  3. Windows Azure 解决方案系列:组合拍卖供应商以云服务快速拓展,并节省成本
  4. 评价算法的性能从利用计算机资源角度,计算机专业数据结构课后练习题汇编
  5. 在 C# 中,new 关键字可用作运算符、修饰符或约束。
  6. 【2016年第2期】专题导读:大数据与社会治理
  7. OpenShift 4 - 基于URL的应用路由
  8. hadoop大数据架构
  9. 结构体Sqlist L与Sqlist L的区别
  10. BMZCTF misc1
  11. prolog寻找三角形个数
  12. 平面广告设计课程中发散思维训练
  13. ST电机库v5.4.4源代码分析(7): SpeednPosFdbk_Handle_t在几个结构体中的关系
  14. 极简微前端框架-京东MicroApp开源了
  15. 使用element-ui实现表格分页
  16. 计算机之父 匈牙利“唯一的天才” 冯·诺依曼
  17. 软件公司项目经理岗位职责
  18. 软件测试公司都会查学历吗,高新技术企业申请会查员工学历吗?申请高新技术企业注意事项解读...
  19. Newstar Ctf 2022| week2 wp
  20. CTFHUB find_it

热门文章

  1. linux init配置文件说明
  2. 边缘AI:国内首个高性能神经网络认知+项目实战发布
  3. ACMMM 2021-多模态宝藏!京东梅涛团队重磅开源第一个适用于多个任务的多模态代码库x-modaler...
  4. LaneAF | 利用Affinity Field聚类进行车道线实例分割
  5. 百度视觉技术部实习生招聘
  6. IoU-aware的目标检测,显著提高定位精度
  7. 登顶Github趋势榜,非监督GAN算法U-GAT-IT大幅改进图像转换效果
  8. 国家自科基金人工智能项目比较:西电第一 清华第二 电子科大第三
  9. python Scrapy爬取天气预报,零基础的你也可以快速上手
  10. C语言是作为一个程序员必须了解的,那么你知道怎样学习C语言吗?