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

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: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。

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

【VS开发】【DSP开发】地址对齐的更多相关文章

  1. DSP开发笔记一

    前言 ​ 本笔记首先对DSP的特点及其选型进行了描述,然后重点记录DSP开发环境的搭建及基础工程示例,对为DSP开发新手有一定的指导作用. 1. DSP简介 1.1 主要特点 在一个指令周期内可完成一 ...

  2. Davinci DM6446开发攻略——DSP开发工程建立

    前段时间一直忙一个项目,同时在生活上时时提防和抵抗中国地沟油.国外核心转基因调和油.大豆油.色拉油.大米玉米.可怕的喂药鱼.药水泡农药喷无虫咬的青菜,所以没时间打理自己的博客,让开发攻略停顿了一段时间 ...

  3. 【DSP开发】CCS数据格式 load

    CCS支持的.dat文件详解(转载于hellodsp) CCS支持的.dat文件的格式为: 定数 数据格式 起始地址 页类型 数据块大小 1651 其后是文件内容,每行表示一个数据. 定数固定为&qu ...

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

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

  5. DSP开发资源总结,经典书籍,论坛

    OMAP4开发资源总结: 一.TI OMAP4官网介绍: http://www.ti.com.cn/general/cn/docs/wtbu/wtbuproductcontent.tsp?templa ...

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

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

  7. 你应该知道的4个DSP开发支持库

    引言 在dsp开发中,为了节省开发时间和难度,TI将一些成熟的算法封装为模块,供开发者使用.如果能充分利用这些算法支持库,对于加快dsp开发进程与提高代码质量.稳定性有非常大的帮助. Digital ...

  8. 【DSP开发】利用CCS5.4开发基于DSP6455的JPEG2000图像解压缩过程

    [DSP开发]利用CCS5.4开发基于DSP6455的JPEG2000图像解压缩过程 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:前端是时间基于VS ...

  9. 【DSP开发】DSP能用VS2010生成的链接库文件吗?

    [DSP开发]DSP能用VS2010生成的链接库文件吗? 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:可能这个问题让行家看上去就会莞尔一笑,但是很多 ...

随机推荐

  1. Hadoop-No.13之数据源系统以及数据结构

    文件系统中采集数据时,应该考虑以下内容. 数据源系统设备的读取速率 在所有处理流水线中,磁盘I/O通常都是主要瓶颈.但是优化采集流程时通常要看一下检索数据的系统系统.一般来说,Hadoop的读取速度在 ...

  2. 2019CCPC秦皇岛(重现赛)-D

    链接: http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1004&cid=872 题意: 给定一个正整数 n,要求判断 1 ...

  3. Remote API(RAPI)之 系统信息

    RAPI提供了一些取系统信息的函数 CeGetSystemInfo:返回当前系统信息 CeGetSystemMetrics:获取Windows元素的尺寸和系统设置 CeGetVersionEx:获取当 ...

  4. attr(name|properties|key,value|fn)

    attr(name|properties|key,value|fn) 概述 设置或返回被选元素的属性值.大理石平台厂家   参数 nameStringV1.0 属性名称 propertiesMapV1 ...

  5. HZOJ 20190727 T2 单(树上dp+乱搞?+乱推式子?+dfs?)

    考试T2,考试时想到了40pts解法,即对于求b数组,随便瞎搞一下就oxxk,求a的话,很明显的高斯消元,但考试时不会打+没开double挂成10pts(我真sb),感觉考试策略还是不够成熟,而且感觉 ...

  6. vue 钩子函数的使用

    1.什么是自定义指令,有哪些钩子函数及自定义指令的使用场景 ①自定义指令是什么?以及自定义指令的使用场景 在Vue中,有很多内置指令,但是这些指令只能满足我们最基础的使用,当我们在实际项目中遇到了必须 ...

  7. jQuery属性操作之类样式操作

    类样式的操作:指对DOM属性className进行添加.移除操作.比如addClass().removeClass().toggleClass(). 1. addClass() 1.1 概述 $(se ...

  8. P1598 垂直柱状图

    输入格式: 四行字符,由大写字母组成,每行不超过100个字符 输出格式: 由若干行组成,前几行由空格和星号组成,最后一行则是由空格和字母组成的.在任何一行末尾不要打印不需要的多余空格.不要打印任何空行 ...

  9. PHP ob_get_level嵌套输出缓冲

    PHP的输出缓存是可以嵌套的.用ob_get_level()就可以输出嵌套级别. 测试发现在cli和浏览器下输出结果不一样(PHP5.4). ob_level1.png手册说明如下: ob_get_l ...

  10. LeetCode 77. 组合(Combinations)

    题目描述 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合. 示例: 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], ...