STM32F429入门(十九):ROM RAM SRAM FLASH
存储器是计算机结构的重要组成部分。存储器是用来存储程序代码和数据的部件,有 了存储器计算机才具有记忆功能。
一、存储器的种类
存储器按其存储介质特性主要分为“易失性存储器”和“非易失性存储器”两大类。 其中的“易失/非易失”是指存储器断电后,它存储的数据内容是否会丢失的特性。由于一 般易失性存储器存取速度快,而非易失性存储器可长期保存数据,它们都在计算机中占据着重要角色。在计算机中易失性存储器最典型的代表是内存,非易失性存储器的代表则是硬盘。
易失性存储器可以理解为是我们电脑的内存条(一般都是DRAM,再嵌入式用的是SRAM),非易失性存储器可以理解为是电脑中的机械硬盘,他们传输的速率是有着很大的区别的。再优秀的CPU也不可能一直在等着机械硬盘的传输完成,所以我们需要内存条相互协调。
二、RAM(Random Access Memory)
随机存储器,所谓―随机存取,指的是当存储器中的消息被读取或写入时,所需要的时间与这段信息所在的位置无关。根据 RAM 的存储机制,又分为动态随机存储器 DRAM(Dynamic RAM)以及静态随机存储器 SRAM(Static RAM)两种。
(1)DRAM的存储单元结构——使用电容的电荷来表示数据
电容本身具有放电特性,所以DRAM有个功能,会定时充电,维持正确数据。动态随机存储器 DRAM 的存储单元以电容的电荷来表示数据,有电荷代表 1,无电荷代表 0,但时间一长,代表 1 的电容会放电,代表 0 的电容会吸收电荷,因此 它需要定期刷新操作,这就是“动态(Dynamic)”一词所形容的特性。
刷新操作会对电容进行检查,若电量大于满电量的 1/2,则认为其代表 1,并把电容充满电;若电量小于 1/2, 则认为其代表 0,并把电容放电,藉此来保证数据的正确性。
SDRAM(Synchronous DRAM):根据DRAM的通讯方式,又分为同步和异步两种,这两种方式根据通讯时是否需要使用时钟信号来区分。比如下面的利用时钟同步的通讯时序,它在时钟的上升沿表示有效数据。这种通讯速度更快。
DDR SRAM(Double Data Rate SDRAM):
这是为了进一步提高SDRAM的通讯速度所设计的。它的存储特性与 SDRAM 没有区别,但 SDRAM 只在上升沿表示有效数据, 在 1 个时钟周期内,只能表示 1 个有数据;而 DDR SDRAM 在时钟的上升沿及下降沿各表示一个数据,也就是说在 1 个时钟周期内可以表示 2 数据,在时钟频率同样的情况下,提 高了一倍的速度。至于 DDRII 和 DDRIII,们的通讯方式并没有区别,主要是通讯同步时钟的频率提高了。 当前个人计算机常用的内存条是 DDRIII SDRAM 存储器,在一个内存条上包含多个 DDRIII SDRAM 芯片。
种类 | 特点 |
---|---|
普通SDRAM | 在上升沿时同步数据 |
DDRII SDRAM | 在上升沿及下降沿都同步数据,时钟极限频率800MHz |
DDRIII SDRAM | 在上升沿及下降沿都同步数据,时钟极限频率1600MHz |
(2)SRAM的存储单元结构——以锁存器来存储数据
这种电路结构不需要定时刷新充电,就能保持状态(当然,如果断电了,数据还是会丢失的),所以这种存 储器被称为“静态(Static)”RAM。
SRAM 根据其通讯方式也分为同步(SSRAM)和异步 SRAM,相对来说,异步 SDRAM 用得较多。
综上,我们可以对DRAM和SRAM进行对比:
对比 DRAM 与 SRAM 的结构,可知 DRAM 的结构简单得多,所以生产相同容量的存 储器,DRAM 的成本要更低,且集成度更高。而 DRAM 中的电容结构则决定了它的存取 速度不如 SRAM。
所以在实际应用场合中,SRAM一般只用于CPU内部的高速缓存(Cache),而外部扩展的内存一般用DRAM。
同步与异步存储器:(根据有无时钟线划分)
同步方式:
异步方式:
三、ROM(Read Only Memory)
种类 | 特性 |
---|---|
MASK ROM | 出厂时固化,不可修改 |
OTPROM | 用户可写入一次,之后不可修改 |
EPROM | 可重复擦写,需要使用专用紫外线照射设备擦除 |
EEPROM | 可重复擦写,电擦除,使用方便 |
四、FLASH
FLASH 存储器又称为闪存,它也是可重复擦写的储器。它的容量一般比 EEPROM 大得多,且在擦除时,一般以多个字节为 单位。如有的 FLASH 存储器以 4096 个字节为扇区,最小的擦除单位为一个扇区。根据存 储单元电路的不同,FLASH 存储器又分为 NOR FLASH 和 NAND FLASH。FLASH在写入新数据之前,必须先将原来的数据擦除,这一点跟硬盘不相同,它需要将此块的数据全都置1,之后我们再写入数据0。
NOR FLASH与NAND FLASH的对比:
我们平时讲的手机内存,256GB等概念,都在说的是NAND FLASH。
NOR 与 NAND 的共性是在数据写入前都需要有擦除操作,而擦除操作一般是以“扇区/块”为单位的。而 NOR 与 NAND 特性的差别,主要是由于其内部“地址/数据线”是否分开导致的。
为了区分上面的两大FLASH,我们首先来了解一下什么是XIP:
XIP就是WINCE XIP KERNEL(立即执行特性),是CE核心部分,XIP是为eXecute In Place的缩写,在微软的CE定义中,这块区域存放的是以非压缩格式存放,不需加载,由Bootloader直接调用执行。
在嵌入式中,我们可以说是芯片内执行,指应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。也就是nor flash不需要初始化,就可以直接在flash里面执行代码。这里面所说的并不是在存储器内执行,而是指CPU的取值模块可以直接nor flash中把指令取出来,供后面的译码和执行模块使用。
NAND FLASH器件使用复杂的I/O口来串行地存取数据,8个引脚用来传送控制、地址和数据信息。它的时序比较复杂,所以一般CPU最好集成NAND控制器。另外由于NAND FLASH没有挂接在地址总线上,如果想以它作为系统地启动盘,就需要CPU具有特殊的功能。
所以我们再来继续分析以上两种flash:
由于 NOR 的地址线和数据线分开,它可以按“字节”读写数据,符合 CPU 的指令译码执行要求,所以假如 NOR 上存储了代码指令,CPU 给 NOR 一个地址,NOR 就能向 CPU 返回一个数据让 CPU 执行,中间不需要额外的处理操作。 而由于 NAND 的数据和地址线共用,只能按“块”来读写数据,假如 NAND 上存储 了代码指令,CPU 给 NAND 地址后,它无法直接返回该地址的数据,所以不符合指令译码要求。
若代码存储在 NAND 上,可以把它先加载到 RAM 存储器上,再由 CPU 执行。所以在 功能上可以认为 NOR 是一种断电后数据不丢失的 RAM,但它的擦除单位与 RAM 有区别, 且读写速度比 RAM 要慢得多。
FLASH 的擦除次数都是有限的(现在普遍是 10 万次左右),当它的使用接近寿命的时候,可能会出现写操作失败。由于 NAND 通常是整块擦写,块内有一位失效整个块就会失效,这被称为坏块,而且由于擦写过程复杂,从整体来说 NOR 块块更少,寿命更长。 由于可能存在坏块,所以 FLASH 存储器需要“探测/错误更正(EDC/ECC)”算法来确保数据的正确性。
由于两种 FLASH 存储器特性的差异,NOR FLASH 一般应用在代码存储的场合,如嵌 入式控制器内部的程序存储空间。而 NAND FLASH 一般应用在大数据量存储的场合,包括 SD 卡、U 盘以及固态硬盘等,都是 NAND FLASH 类型的。
最后总结:
NOR FLASH:
能像RAM一样寻址:带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。
用户可以直接运行装在在NOR FLASH里面的代码:NOR Flash有自己的数据和地址总线,因此可采用类似RAM的随机访问。各单元之间是并联的,对存储单元进行统一编址(有独立地址线),所以可以随机访问任意一个字。
应用程序可以直接在NOR Flash内运行(应用程序的Code和RO段可以直接在NOR Flash上运行,只需要把RW段和ZI段拷贝到RAM中运行即可),不必再把代码读到系统RAM中去。
但NOR Flash不能像RAM以字节改写数据,只能按页依次写数据,故NOR Flash不能代替RAM。 原文链接:详述NOR Flash和NAND Flash区别_御风而行的蚂蚁的博客-CSDN博客
有更快的读取速度,处理小数据量的io操作速度更快。
擦除即可整页擦除,也可以整块擦除。擦写次数是10万次,不适合频繁擦写:Flash檫写的次数都是有限的,Flash写入和擦除数据时会导致介质的氧化降解。不能对Flash的某个特定的区域反复进行擦写操作。
随机存储介质,适合做程序存储并XIP。
在1-4MB的小容量时具有很高的成本效益
可靠性相对性更高
存储密度较低
NAND FLASH:
有更快的写入和擦除速度:页是读写数据的最小单元(512B),块是擦除数据的最小单元(8kb)
NAND的擦鞋次数是100w次:通常NAND Flash的可擦写次数高于NOR Flash,但是由于NAND Flash通常是整块檫写,块内的页面中如果有一位失效整个快就会失效,而且由于擦写过程复杂,失败的概率相对较高,所以从整体上来说NOR Flash的寿命较长。
连续存储介质,适合做数据存储
容量较大,成本较低
可靠性相对较低
坏块随机分配,需要进行坏块管理:在NAND Flash中,由于坏块是随机分布的,因此需要进行扫描并将坏块打上标记。坏块的存在使得向NAND Flash写入信息需要相当的技巧,因为绝不能向坏块写入,这意味着在NAND Flash上自始自终都必须进行虚拟映射。
存储密度较高
使用NAND FLASH时,必须先写入驱动程序,才能继续执行其他操作。
STM32F429入门(十九):ROM RAM SRAM FLASH相关推荐
- 单片机中的ROM,RAM和FLASH的作用
本文部分参考自:http://blog.sina.com.cn/s/blog_98ca54fc01017y4t.html 并在此基础上进行整理,添加了关于flash的问题. 之前从较为抽象的角度介绍了 ...
- 路由器中Rom/Ram/NVRAM/FLASH的区别
路由器采用了以下几种不同类型的内存,每种内存以不同方式协助路由器工作. A.只读内存(ROM). B.闪存(FLASH). C.随机存取内存(RAM). D.非易失性RAM(NVRAM). 1. ...
- 【硬创邦】跟hoowa学做智能路由(十):扩充RAM和FLASH
前几篇好多人都说路由器的内存太小了,FLASH太小了怎么办.那我们这章就介绍下怎么给路由器扩充内存和存储器. 站在玩家兴趣身份上来说,这章的内容会让以后更精彩,操作技术上也存在一些难度,请大家认真操作 ...
- 安卓Andriod使用入门(十九)【网络视频播放器】
有时侯明白人的一生当中,深刻的思念是维系自己与记忆的纽带.它维系着所有的过往.悲喜,亦指引我们深入茫茫命途.这是我们宿命的背负.但我始终甘之如饴地承受它的沉沉重量,用以平衡轻浮的生. MainActi ...
- 【Electron】Electron开发入门(九):添加Flash插件
一.Electron官方开启Flash插件说明:https://electronjs.org/docs/tutorial/using-pepper-flash-plugin 看了这篇文章,并且各种操作 ...
- WebGL入门(十九)-三维视图通过调整正射投影矩阵/盒状可视空间实现三角形的显示与消失
三维视图正射投影矩阵 1.demo效果 2.相关知识点 2.1 正射投影 2.2 Matrix4.setOrtho()函数 3. demo代码 1.demo效果 如上,通过上下键调整正投影矩阵参数fa ...
- 常用存储器(ROM/RAM/FLASH/SDRAM/SRAM/DDR/EEPROM/emmc)
单片机 ROM /RAM/FLASH区别 1.ROM,RAM和FLASH在单片机中的作用 ROM--存储固化程序的(存放指令代码和一些固定数值,程序运行后不可改动) c文件及h文件中所有代码.全局变量 ...
- ROM、RAM和FLASH的区别是什么?SRAM、DRAM、PROM、EPROM、EEPROM
ROM.RAM和FLASH的区别是什么? SRAM.DRAM.PROM.EPROM.EEPROM 一.性能对比 1.ROM和RAM指的都是半导体存储器,ROM在系统停止供电的时候仍然可以保持数据,而R ...
- ROM、RAM、Flash的区别
关键的一些名词: PROM,EPROM,EEPROM,SPD,SRAM,DRAM,RDRAM,SDRAM,DDRSDRAM,NORFlash,NADNFlash,HDD,SSD,SLC,MLC,TLC ...
最新文章
- Linux 下安装cnpm淘宝镜像命令npm
- 图片上加动图怎么弄_用PS把千张图片拼成心爱的人的样子,只需三步!
- [moka同学笔记]redis练习Demo
- android蓝牙打印机
- 无穷级数求和7个公式_亿图在线公式编辑器使用方法入门篇
- json vs obj
- iOS开发之网络编程--6、NSURLSessionConfiguration笔记
- ARCore-Unity3d教程3 - Unity Demo发布
- hadoop 权限错误 Permission denied: user=root, access=WRITE, inode=/:hdfs:super
- SDRAM控制器设计(9)用读写FIFO优化及仿真验证
- 3dMax 闪退未保存的解决方案
- php三D立体模拟,【HTML5】3D模型--百行代码实现旋转立体魔方实例
- 企业移动互联网营销的最佳切入点在哪里?
- oracle实例由,Oracle 数据库的实例由( )组成
- android webview 无法显示图片,Android解决WebView加载微信公众号文章不显示图片
- 使用拦截器防止表单重复提交
- 征服统计学08|天天在用的P值到底是个啥?
- 这些大文件传输工具总结,建议外贸人士收藏
- GPU阵列 安特卫普大学展示桌面超级计算机Fastra II
- 用Python找回微信撤回信息,(来自程序员的小骄傲)就算你撤回我也看的到~