本篇文章主要介绍处理器中存储器:ROM和RAM以及数据在内存中的存储顺序:大/小端(Little/Big Endian)。


只读存储器(ROM)

ROM(Read Only Memory)用来存储和保存数据。ROM数据不能随意更新,但是在任何时候都可以读取。即使是断电,ROM也能够保留数据。此内存主要用来放置使用者所开发之程序,eg. Bios,boot,而其性质乃属于不常更动或永不变动之资料,微控制器之动作便是依据储存于此区之程序指令运作。

ROM有很多种,例如PROM,EPROM,EEPROM,具体可百度。


随机存取存储器(RAM)

RAM(Read-Write Memory)亦称为读/写内存,是与CPU直接交换数据的内部存储器,也叫内存。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介, 当电源关闭时RAM不能保留数据。

RAM 可以进一步分为静态RAM(SRAM)和动态内存(DRAM)两大类。静态RAM(Static RAM/SRAM):SRAM速度非常快,不需要刷新电路即能保存数据,是目前读写最快的存储设备了,但是集成度较低,多用于CPU的一级缓存,二级缓存(L1/L2 Cache);动态RAM(Dynamic RAM/DRAM),DRAM保留数据的时间很短(需要内存刷新电路,每隔一段时间,刷新充电一次,否则数据会消失),速度也比SRAM慢,不过它还是比任何的ROM都要快.

若其地址总线位32位,则RAM大小为2^32bits。


大/小端模式

存储器中对数据的存储是以字节(Byte)为基本单位的,因此,字(Word)和半字(Half-Word)在存储器中就有两种次序,分别称为:大端模式(Big Endian)和小端模式(Little Endian)。

大段模式:低地址存放高字节数据。

小端模式:低地址存放低字节数据。

例如一个 int 型变量中存放一个数值是 0x12345678的数据:

大端模式:

小端模式:

一般地,ARM处理器均默认为小端模式。

知道了大小端模式的概念,怎样用C语言写段代码判断一个CPU是大端模式还是小端模式应当如何做呢 ?要用C语言实现就要用到联合体(union)。联合体union中的存放顺序是所有成员都从低地址开始存放,利用该特性可获得处理器对内存采用Little Endian还是Big Endian模式的读写。

采用union来判断,具体代码如下:

int CheckEndian(void){union check{int  word;char half;} Endian;Endian.Word=1;if(1 == Endian.half)return Little_Endian;else return Big_Endian;
}

另外关于共用体与结构体:

结构体和共用体的区别在于结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。
结构体占用的内存大于等于所有成员占用的内存的总和(成员之间可能会存在缝隙),共用体占用的内存等于最长的成员占用的内存。共用体使用了内存覆盖技术,同一时刻只能保存一个成员的值,如果对新的成员赋值,就会把原来成员的值覆盖掉。

动态ram依靠什么存储信息_处理器内存系统1(ROM,RAM,数据存储顺序)相关推荐

  1. 动态半导体ram依据什么存储信息_都是存储器,但RAM、ROM、闪存、硬盘怎么分?...

    曾经有一段时间,我对电脑.手机上的RAM.ROM.内存.闪存.运行内存.机身内存.存储空间等都"傻傻分不清楚",后来花了不少时间,才把这几者的来龙去脉分清楚. 总的来说上面那些算是 ...

  2. Linux系统连接华为oceanstor数据存储

    Linux系统连接华为oceanstor数据存储 一.登录检查oceanstor数据存储 二.配置linux使用的数据储存 1.创建LUN 2.创建Lun组 3.创建主机 4.创建主机组 5.创建映射 ...

  3. 动态半导体ram依据什么存储信息_静态ram和动态ram的区别是什么

    随机存取存储器(random access memory,RAM)又称作"随机存储器",是与CPU直接交换数据的内部存储器,也叫主存(内存).它可以随时读写,而且速度很快,通常作为 ...

  4. 马逊s3云存储接口_使用 Amazon S3 云服务轻松实现存储

    Amazon Simple Storage Service (S3) 是一个公开的服务,Web 应用程序开发人员可以使用它存储数字资产,包括图片.视频.音乐和文档. S3 提供一个 RESTful A ...

  5. minio对象存储原理_使用MinIO在本地运行S3对象存储

    minio对象存储原理 Object storage is amazingly versatile. We normally associate it with AWS S3, but Object ...

  6. python读二进制格点雷达基数据_对numpy中二进制格式的数据存储与读取方法详解...

    使用save可以实现对numpy数据的磁盘存储,存储的方式是二进制.查看使用说明,说明专门提到了是未经压缩的二进制形式.存储后的数据可以进行加载或者读取,通过使用load方法. In [81]:np. ...

  7. python 埋点 库_埋点全解 10 :数据存储

    1.原理概述 为了最大限度的保证事件数据的准确性.完整性和及时性,数据采集 SDK 需要及时的将事件数据同步到服务端.但在某些 特殊情况下,比如手机处于断网环境,或者根据实际需求只能在 Wi-Fi 环 ...

  8. 希捷发布CORTX对象存储软件与开源社区,普惠超大规模数据存储

    数据存储和管理解决方案提供商希捷科技今日(10月29日)举行了"Let's Rethink Data"希捷科技Datasphere线上峰会.在本次峰会,希捷科技携手行业专家与生态合 ...

  9. 表格存储TableStore全新升级,打造统一的在线数据存储平台!

    表格存储TableStore是阿里云自研的面向海量结构化和半结构化数据存储的Serverless NoSQL多模型数据库,被广泛用于社交.物联网.人工智能.元数据和大数据等业务场景.表格存储Table ...

最新文章

  1. mysql_connect 废弃_解决Deprecated: mysql_connect():
  2. css中font的简写
  3. python教程:apscheduler模块使用教程
  4. kafka高可用集群课程介绍
  5. 《c语言从入门到精通》看书笔记——第16章 网络套接字编程(下)——套接字
  6. 机器学习之决策树的原理及sklearn实现
  7. 微软发布.Net Core 3.0 RC1,最终版本定于9月23日
  8. 【在线集成开发环境】Eclipse Che简单上手体验
  9. duplicate复制数据库
  10. 读李云同学的博文:无能的很可能正是我们自己
  11. mybatis简明教程
  12. Windows11配置Java开发环境
  13. 彗星撞地球-Warez组织的经典力作(15G动画压缩成64Kb的那个,2004年的第一名)
  14. 轻松办公信息化,六大OA产品优劣点评
  15. 判断一个很大的数是否是11的倍数(2种做法)
  16. stm32cubeide 汉化包_经过两天瞎折腾,分享下STM32CUBE IDE的用法
  17. 编程数学课:万万没想到,他们都用这个方式学好了数学
  18. 关于Java的点点滴滴(1)——Static关键字
  19. 敏捷DoD和DoR的多种形态
  20. 香港乐坛25年发展 [ 2005-04-24 07:28 PM | 作者:老唱片 | 来自:老唱片]

热门文章

  1. 虚拟化精华问答 | 什么是虚拟化?
  2. linux删除mysql临时文件_linux下mysql自动备份数据库与自动删除临时文件_MySQL
  3. SpringBoot2 集成 skywalking 实现链路追踪
  4. shell脚本报错“^M: bad interpreter”解决方法
  5. 企业实战_09_MyCat 搭建Mysql 一主三从复制环境
  6. Springboot异步任务线程池
  7. ftp 553 Could not create file
  8. (需求实战_02)_ftp连接下载指定.zip类型文件
  9. 'parent.relativePath' points at no local POM
  10. docker Gitlab14.5.0 安装、配置、部署、使用