嵌入式基础知识-存储器

news2024/10/6 1:37:55

本篇介绍计算机存储硬件的一些基础知识,在嵌入式开发中,也同样适用。

1 计算机存储结构

存储器是计算机中的重要部件,理想的存储器应该是执行快,容量足,价格便宜等。但实际上,目前无法同时满足这些目标,因此计算机通常采用分级存储的方式。

  • 寄存器:CPU寄存器,保存来自cache的字
  • L1高速缓存:芯片内的高速缓存cache,保存来自芯片外cache的行
  • L2高速缓存:芯片外的高速缓存,如SRAM、DRAM、DDRAM,保存来自主存储器cache的行
  • 主存储器:如Flash、PROM、EPROM、EEPROM,保存来自外部存储器的文件
  • 外部存储器:如磁盘、光盘、CF卡、SD卡等
  • 远程二级存储:如分布式文件系统,Web服务器

2 存储器分类

2.1 RAM与ROM

按照存储器存放信息易失性,可分为RAM和ROM:

  • RAM:随机存储器(Random Access Memory),读写速度快,但掉电时会丢失其存储的内容
  • ROM:只读存储器(Read-Only Memory),存储的内容掉电后不会丢失

2.1.1 RAM

按照RAM存储单元的工作原理,又可分为如下几类:

  • SRAM:静态随机存储器(Static RAM),它是靠触发器的自保护功能存储数据,数据一旦写入,其信息就稳定的保存在电路中等待读出,无论读出多少次,只要不断电,信息会一直保存
  • DRAM:动态随机存储器(Dynamic RAM),它将每个位存储为对一个电容的充电,而它的电容容量小,易漏电,因此需要定时给电容补电,通常称为"刷新"
  • DDR SDRAM:双倍速率同步动态随机存储器(Double Date Rate SDRAM),或称为DDR。DDR内存是在SDRAM内存的基础上发展而来的

2.1.2 ROM

  • PROM:可编程只读存储器(Programmable ROM)
  • EPROM:可抹除可编程只读存储器(Erasable Programmable ROM)
  • EEPROM:电子式可抹除可编程只读存储器(Electrically Erasable Programmable ROM)

2.2 Cache

Cache是一种比常见内存更快的存储器,一般称为高速缓存存储器。

根据Cache的工作机制,可分为:

  • 回写式Cache:当CPU执行写数据时,回写式Cache只把该数据写入其数据地址对应的Cache中,不直接写入内存。仅当该Cache块需要替换时,才把Cache写回写入内存中
  • 写通式Cache:当CPU执行写数据时,写通式Cache必须同时把该数据写入其数据地址对应的Cache块和内存中。

2.3 其它

2.3.1 Flash

Flash称为快闪存储器,简称闪存,因其擦除和写入速度比较快而得名。

Flash是EEPROM的变种,不同的是EEPROM能在字节水平上进行擦除重新,而Flash需要在块的水平上进行擦除。

  • NOR Flash:它带有SRAM接口,有足够的地址引脚来寻址,可以方便地存取其内部的每一个字节,因此可直接连接总线系统,构成内存储器
  • NAND Flash:它使用复杂的I/O口来串行地存取数据,采用串行接口,不能直接构成内存,只能用来构成外部存储器

两者的一些特点对比:

  • NOR的读速度比NAND稍快
  • NAND的写速度比NOR快很多
  • NAND的擦除速度也比NOR快很多
  • NAND的擦除单元更小
  • NOR上可直接运行程序,NAND只能存储信息

2.3.2 磁盘、光盘等

  • 磁盘:利用磁头变化和磁化电流进行读/写的存储器
  • 光盘:用光学方式读/写信息的圆盘
  • CF卡:紧凑式闪存(Compact Flash),由SanDisk公司于1994年生成,并制定相关规范
  • SD卡:安全数字存储卡(Secure Digital Memory Card)

3 三级存储体系

上面介绍过,存储器的3个指标:容量、速度、价格往往无法同时满足,因此计算机采用多级存储器构成存储体系。

典型的三级存储结构,从内到外一般指Cache、主存储器、外部存储器。

Cache设置在CPU和主存之间,可放在CPU的内部或外部,其作用是解决主存和CPU的速度匹配问题。

除了速度匹配问题,存储还受容量制约,因此。还需要外部存储器提供大容量存储空间。

4 高速缓存控制器

高速缓存控制器负责CPU与高速缓存和主存之间的通信控制

5 一些存储相关的计算题

5.1 题目1

某计算机总线是32位,地址空间从0xF000000到0xF007FFFF映射为Flash空间,若实现Flash的最大存储容量,至少需要多少片16Kx16bit的Flash芯片。

主存容量计算,内存地址和芯片计算问题,先要了解:

  • 内存单元个数=内存尾地址-内存首地址+1
  • 内存容量=内存单元个数x每个内存单元容量
  • 将得出的16进制容量简化为2的幂的形式

分析:

  • Flash的存储单元个数为:0xF007FFFF-0xF0000000+1=0x80000=2^19个
  • 总线是32位,也表示内存单元的大小是32bit
  • 因此,Flash总的容量大小为219*32bit=224bit
  • 每片的大小是16Kx16bit,也即2^18bit
  • 因此,需要的片数为:224/218=2^6=64片

5.2 题目2

某计算机字长是32位,存储容量是256KB,求按字编址的寻址范围

一些基础知识:

:二进制的每一个0或1是组成二进制的最小单位,称为位(bit)。

:计算机在存储、传送或操作时,作为一个单元的一组二进制码称为字。

字长:一个字中的二进制位的位数称为字长,常用的字长包括8位、16位、32位、64位。例如,通常把处理字长为8位数据的CPU称为8位CPU。

字节:字长为8位的编码称为字节(Byte),字节是计算机中的基本编码单位

分析:

  • 按字编址,需要知道字长,题目知字长32位,即4Byte
  • 存储容量256KB,即256K Byte
  • 所以,寻址氛围为256K/4=64K

5.3 题目3

一个32Kx32位的静态存储器,求其地址线和数据线的位数

分析:

  • 32位,说明数据宽度是32位,有即数据线的位数是32
  • 32K,即2^15,所以地址线需要15位

5.4 题目4

某计算机主存容量64KB,其中ROM区为4KB,其余是RAM区,按字节编址。若使用2Kx8位的ROM和4Kx4位的RAM设计该存储器,计算两种需用到的数量。

分析:

  • 由题目知,ROM是4KB,RAM是64-4=60KB,
  • 按字节编址,则按8bit位编址
  • 一片ROM是2Kx8bit,需要2片
  • 一片RAM是4Kx2bit,需要30片

5.5 题目5

容量为64块的Cache采用组相连方式映射,块大小为128字节,每4块为一组,若主存容量为4096块,且以字节编址,求主存地址的位数和主存区号的位数。

基础知识:

主存地址=区号+组号+组内块号+块内地址号

分析:

  • 块大小为128字节,即128Byte
  • 主存容量为4096块,即4K块,结合块的大小,主存容量为4K*128Byte=512KB=2^19KB,所以主存地址需要19位
  • 块大小为128字节(2^7),则块内地址需要用7位表示
  • 每4组为一块,则组内块号需要用2位表示
  • Cache容量为64块,则分了16组,则组号需要用4位表示
  • 主存区号位数=19-7-2-4=6

6 总结

本篇介绍了计算机存储硬件的一些基础知识,包括计算机的存储结构,存储器分类,典型的三级缓存体系,高速缓存控制器,以及一些与存储有关的计算题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/817290.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue2 第十节 内置指令和自定义指令

1.之前学过的指令 2. 内置指令 3. 自定义指令 一.之前学过的指令 指令名用法v-bind单项绑定解析表达式,可以简写为:xxxv-model双向绑定v-for遍历数组/对象/字符串v-on 绑定监听事件,可以简写为v-if条件渲染(动态控制节点是否存在&#xf…

算法通关村第二关——反转链表白银挑战笔记

文章目录 1.链表指定区间翻转2.两两交换链表中的节点 1.链表指定区间翻转 LeetCode 92.反转链表 解法一:头插法。利用虚拟节点进行反转,因为头节点有可能发生变化,比如 left1 那么需要 dummyNode.next 记录头结点,使用虚拟头节点…

计算机网络(2) --- 网络套接字

计算机网络(1) --- 网络介绍_哈里沃克的博客-CSDN博客https://blog.csdn.net/m0_63488627/article/details/131967378?spm1001.2014.3001.5501 目录 1.端口号 2.TCP与UDP协议 1.TCP协议介绍 1.TCP协议 2.UDP协议 3.理解 2.网络字节序 发送逻辑…

学会这13个问题,轻松拿捏Java容器面试

java 容器都有哪些? 常用容器的图录: Collection 和 Collections 有什么区别? java.util.Collection 是一个集合接口(集合类的一个顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java …

29.利用fminbnd 求解 最大容积问题(matlab程序)

1.简述 用于求某个给定函数的最小值点。 使用方法是: xfminbnd(func,x1,x2) func是函数句柄,然后x1和x2就是函数的区间,得到的结果就是使func取最小值的x值 当然也可以使用[x,fv]fminbnd(func,x1,x2)的方式,这个时候fv就是函数…

项目实战 — 消息队列(2){数据库操作}

目录 一、SQLite 🍅 1、添加依赖 🍅 2、修改配置文件后缀(properties -> yaml) 🍅 3、编写配置文件 二、建立数据表 三、添加插入和删除方法 四、整合数据库操作(DataBaseManger类) &a…

螺旋矩阵(JS)

螺旋矩阵 题目 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1: 输入:n 3 输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2: 输入&#xff…

【自动化运维】编写LNMP分布式剧本

目录 一 playbook编写LNMP1.1环境设置1.2编写Nginx剧本1.3、编写Mysql剧本1.4准备PHP剧本 一 playbook编写LNMP 1.1环境设置 ip服务192.168.243.100ansible192.168.243.102nginx192.168.243.103PHP192.168.243.104mysql 1.2编写Nginx剧本 1.编写Nginx源 mkdir -p /etc/ans…

Linux之 centos、Ubuntu 安装常见程序

CentOS 安装 MySql 注意 需要有root权限 安装5.7版本 – 由于MySql并不在CentOS的官方仓库中,所以需要通过rmp命令: 导入MySQL仓库密钥 1、配置MySQL的yum仓库 配置yum仓库 更新密钥 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 安装…

【AHB-Lite总线】hreadyin和hreadyout的区别

AHB-Lite总线协议请查看 AHB-Lite总线协议 首先看下hreadyin和hreadyout在系统中的位置 从图中可以看到,每个AHB从设备都有一个HREADY输出信号(hreadyout),它连接到多路复用器。该多路复用器的输出是AHB主机看到的全局hready信…

看完ChatGPT的两个比喻,更加确信为什么人人都应该去使用它

​ ChatGPT就像火 丹尼刘是悉尼大学教育创新临时学术总监。去年年底,在一次工作组会议上,他第一次向同事展示了ChatGPT。同事说出了让刘大吃一惊的话。 “他说,‘哇,这就像火一样,’”刘回忆道。 刘一开始觉得这个…

《JavaSE-第二十二章》之线程安全问题

前言 在你立足处深挖下去,就会有泉水涌出!别管蒙昧者们叫嚷:“下边永远是地狱!” 博客主页:KC老衲爱尼姑的博客主页 博主的github,平常所写代码皆在于此 共勉:talk is cheap, show me the code 作者是爪哇岛的新手,水平很有限&…

安卓相关内容

adb环境变量设置完之后,要重启一次“终端”窗口。 adb安装apk到手机 Android开发:用adb命令安装apk到手机-腾讯云开发者社区-腾讯云 This adb servers $ADB_VENDOR_KEYS is not set frida 出现问题:unable to start: address already in …

软件测试面试题——接口自动化测试怎么做?

面试过程中,也问了该问题,以下是自己的回答: 接口自动化测试,之前做过,第一个版本是用jmeter 做的,1 主要是将P0级别的功能接口梳理出来,根据业务流抓包获取相关接口,并在jmeter中跑…

ES开启身份认证

文章目录 X-Pack简介之前的安全方案ES开启认证ES服务升级https协议开启集群节点之间的证书认证 X-Pack简介 X-Pack是Elastic Stack扩展功能,提供安全性,警报,监视,报告,机器学习和许多其他功能。 X-Pack的发展演变&am…

聊聊拉长LLaMA的一些经验

Sequence Length是指LLM能够处理的文本的最大长度,越长,自然越有优势: 更强的记忆性。更多轮的历史对话被拼接到对话中,减少出现遗忘现象 长文本场景下体验更佳。比如文档问答、小说续写等 当今开源LLM中的当红炸子鸡——LLaMA…

开放麒麟1.0发布一个月后,到底怎么样?另一款操作系统引发热议

具有里程碑意义 7月5日,国产首个开源桌面操作系统“开放麒麟1.0”正式发布。 标志着我国拥有了操作系统组件自主选型、操作系统独立构建的能力,填补了我国在这一领域的空白。 举国欢庆,算的上是里程碑意义了! 发布后用着如何&a…

Linux系统下U盘打不开: No application is registered as handling this file

简述 系统是之前就安装好使用的Ubuntu14.04,不过由于某些原因只安装到了机械硬盘中;最近新买了一块固态硬盘,所以打算把Ubuntu系统迁移到新的固态硬盘上; 当成功的迁移了系统之后发现其引导有点问题,导致多个系统启动不…

所有流的知识都有,IO流原理及流的分类

1、Java IO流原理 I/O是Input/Output的缩写, I/O技术是非常实用的技术,用于处理设备之间的数据传输。如读/写文件,网络通讯等。 Java程序中,对于数据的输入/输出操作以”流(stream)” 的方式进行。java.io包下提供了各种“流”类…

C++语法(27)--- 类型转换和C++线程库

C语法(26)--- 特殊类设计_哈里沃克的博客-CSDN博客https://blog.csdn.net/m0_63488627/article/details/131879800?spm1001.2014.3001.5501 目录 1.类型转换 1.C语言的转换模式 2.C四种类型转换 1.static_cast 2.reinterpret_cast 3.const_cast …