ROM和RAM指的都是半导体存储器
ROM在系统停止供电的时候仍然可以保持数据
RAM通常都是在掉电之后就丢失数据,典型的就是计算机的内存。

一、ROM也有很多种:PROM(可编程的ROM)、EPROM(可擦除可编程ROM)、EEPROM

1、PROM是一次性的,早期的产品,现在已经不可能使用了;

2、EPROM是通过紫外光的照射擦出原先的程序,是一种通用的存储器;

3、EEPROM是通过电子擦出,价格很高,写入时间很长,写入很慢;

举个例子,手机软件一般放在EEPROM中,我们打电话,有些最后拨打的号码,暂时是存在SRAM中的,不是马上写入通讯记录(通话记录保存在EEPROM中),因为当时有很重要工作(通话)要做,如果写入,漫长的等待是让用户忍无可忍的。

二、RAM有两大类:静态RAM(StaticRAM/SRAM)和动态RAM(Dynamic RAM/DRAM)

1、SRAM

  • 不需要刷新电路,掉电丢失数据,而且一般不是行列地址复用的。
  • 集成度比较低,不适合做容量大的内存,一般是用在处理器的缓存里面。像S3C2440的ARM9处理器里面就有4K的SRAM用来做CPU启动时用的;
  • SRAM内部采用的是双稳态电路的形式来存储数据;
  • 制造相同容量的SRAM比DRAM的成本高的多;
  • 因此目前SRAM基本上只用于CPU内部的一级缓存以及内置的二级缓存。仅有少量的网络服务器以及路由器上能够使用SRAM。

2、DRAM

  • 掉电丢失数据。每隔一段时间就要刷新一次数据,才能保存数据。而且是行列地址复用的,许多都有页模式。DRAM利用MOS管的栅电容上的电荷来存储信息,一旦掉电信息会全部的丢失,由于栅极会漏电,所以每隔一定的时间就需要一个刷新机构给这些栅电容补充电荷,并且每读出一次数据之后也需要补充电荷,这个就叫动态刷新,所以称其为动态随机存储器。由于它只使用一个MOS管来存信息,所以集成度可以很高,容量能够做的很大。SDRAM比它多了一个与CPU时钟同步。
  • DRAM保留数据的时间很短,速度也比SRAM慢,不过它还是比任何的ROM都要快;
  • 从价格上来说DRAM相比SRAM要便宜很多,计算机内存就是DRAM的;
  • DRAM分为很多种,常见的主要有FPRAM/FastPage、EDORAM、SDRAM、DDR RAM、RDRAM、SGRAM以及WRAM等,这里介绍其中的一种DDR RAM。
  • 一个DRAM的存储单元存储的是0还是1取决于电容是否有电荷,有电荷代表1,无电荷代表0。但时间一长,代表1的电容会放电,代表0的电容会吸收电荷,这就是数据丢失的原因;刷新操作定期对电容进行检查,若电量大于满电量的1/2,则认为其代表1,并把电容充满电;若电量小于1/2,则认为其代表0,并把电容放电,藉此来保持数据的连续性。

2.1、DDR RAM(Data-Rate RAM)也称作DDR SDRAM

  • 这种改进型的RAM和SDRAM是基本一样的,不同之处在于它可以在一个时钟读写两次数据,这样就使得数据传输速度加倍了。这是目前电脑中用得最多的内存。在很多高端的显卡上,也配备了高速DDR RAM来提高带宽,这可以大幅度提高3D加速卡的像素渲染能力。

2.2、SDRAM(Synchronous DRAM,同步动态随机存储器)

  • 即数据的读写需要时钟来同步。
  • 其存储单元不是按线性排列的,是分页的。
  • DRAM和SDRAM由于实现工艺问题,容量较SRAM大。但是读写速度不如SRAM。
  • 一般的嵌入式产品里面的内存都是用的SDRAM。

三、Flash(闪存)

  • 它结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据(NVRAM的优势),U盘和MP3里用的就是这种存储器。
  • 在过去的20年里,嵌入式系统一直使用ROM(EPROM)作为它们的存储设备,然而近年来Flash全面代替了ROM(EPROM)在嵌入式系统中的地位,它用作存储Bootloader以及操作系统或者程序代码,或者直接当硬盘使用(U盘)。
  • 采用的并行接口,有独立的地址线和数据线,性能特点更像内存,是芯片内执行(XIP, eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。
  • NAND采用的是串行的接口,地址线和数据线是共用的I/O线,类似电脑硬盘。CPU从里面读取数据的速度很慢,所以一般用NAND做闪存的话就必须把NAND里面的数据先读到内存里面,然后CPU才能够执行。无法寻址和直接运行程序,只能存储数据。另外NAND FLASH非常容易出现坏区,所以需要有校验的算法。
  • NOR Flash:用户可以直接运行装载在NOR FLASH里面的代码

目前Flash主要有NOR Flash和NADN Flash

1、类型

分为NOR(或非)、 NAND(与非)

2、接口理解

NOR(或非)----地址、数据总线分开;

NAND(与非)----地址、数据总线共用。

3、读写单位:

NOR(或非)----字节;

NAND(与非)----页

4、组成结构:

NOR(或非)----扇区、字节;

NAND(与非)----块、页;

5、擦除单位:

NOR(或非)----扇区;

NAND(与非)----块;

6、读写擦除速度

NOR的读速度比NAND稍快一些。

NAND的写入/擦除速度比NOR快很多。

flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0。由于擦除NOR器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms。

NAND的擦除单元更小,相应的擦除电路更少。

(注:NOR FLASH SECTOR擦除时间视品牌、大小不同而不同,比如,4M FLASH,有的SECTOR擦除时间为60ms,而有的需要最大6s。)

7、容量

NOR flash占据了容量为1~16MB闪存市场的大部分

NAND flash只是用在8~128MB的产品当中,这也说明NOR主要应用在代码存储介质中,NAND适合于数据存储

8、可靠性和耐用性:

可以从寿命(耐用性)、位交换和坏块处理三个方面来比较NOR和NAND的可靠性。

A)寿命(耐用性) 

在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。

NAND存储器除了具有10比1的块擦除周期优势,典型的NAND块尺寸要比NOR器件小8倍,每个NAND存储器块在给定的时间内的删除次数要少一些。

B)位交换

所有flash器件都受位交换现象的困扰。在某些情况下(很少见,NAND发生的次数要比NOR多),一个比特(bit)位会发生反转或被报告反转了。

一位的变化可能不很明显,但是如果发生在一个关键文件上,这个小小的故障可能导致系统停机。如果只是报告有问题,多读几次就可能解决了。

当然,如果这个位真的改变了,就必须采用错误探测/错误更正(EDC/ECC)算法。位反转的问题更多见于NAND闪存,NAND的供应商建议使用NAND闪存的时候,同时使用EDC/ECC算法。

这个问题对于用NAND存储多媒体信息时倒不是致命的。当然,如果用本地存储设备来存储操作系统、配置文件或其他敏感信息时,必须使用EDC/ECC系统以确保可靠性。

C)坏块处理

NAND器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。在已制成的器件中,如果通过可靠的方法不能进行这项处理,将导致高故障率。

9、易于使用:

基于NOR的闪存,可以像其他存储器那样连接,并可以在上面直接运行代码。

由于NANDLFASH需要I/O接口,所以要复杂得多。各种NAND器件的存取方法因厂家而异。

在使用NAND器件时,必须先写入驱动程序,才能继续执行其他操作。向NAND器件写入信息需要相当的技巧,因为设计师绝不能向坏块写入,这就意味着在NAND器件上自始至终都必须进行虚拟映射。

10、软件支持: 

在NOR器件上运行代码不需要任何的软件支持;

在NAND器件上进行执行操作时,通常需要 驱动程序,也就是内存技术驱动程序(MTD);

NAND和NOR器件在进行写入和擦除操作时都需要MTD。

11、寻址:

NAND每次读取数据时都是指定块地址、页地址、列地址,列地址就是读的页内起始地址,每次都是先将数据读入页缓冲区内,再 由I/O输入地址 在缓冲区内寻址,其实这里列地址,只是指定起始地址的作用。NAND是以页为基本单位 操作的。写入数据也是首先在页面缓冲区内缓冲,数据首先写入这里,再写命令后,再统一写入页内。因此NAND页缓冲区的作用就是,保证芯片的按页的读、写操作,是I/O操作与芯片操作的接口、桥梁,因为数据是从I/O输入的,又是每次一个字节,因此需要缓冲。即使每次改写一个字节,都要重写整个页,因为它只支持页写,而且如果页内有未擦除的部分,则无法编程,在写入前必须保证页是空的。

NOR的 读、写是字节为基本单位操作的,但擦除是以扇区操作的。

综上所述在芯片操作上,NAND要比NOR快很多,因为NAND是页操作的而NOR是字节操作的。

12、应用:
NAND 正是基于这种构造:块、页,无法字节寻址,页读写本身就靠的是内部复杂的串、并行转换 ,因此也没有很多地址引脚,所以其地址、数据线共用,所以容量可以做的很大 。
NOR 是和SRAM一样的可随机存储的,也不需要驱动,因此,其地址就有限,所以容量普遍较小,其实是受限于地址线。

基于以上几点,在工业领域,NOR 用的较多,特别是程序存储,少量数据存储等。
在消费领域,大量数据存储,NAND较多。

Flash ROM是利用浮置栅上的电容存储电荷来保存信息,因为浮置栅不会漏电,所以断电后信息仍然可以保存。也由于其机构简单所以集成度可以做的很高,容量可以很大。Flash rom写入前需要用电进行擦除,而且擦除不同与EEPROM可以以byte(字节)为单位进行,flash rom只能以sector(扇区)为单位进行。不过其写入时可以byte为单位。flash rom主要用于bios,U盘,Mp3等需要大容量且断电不丢数据的设备

存储器局限性

闪存最关键的限制可能是写/擦除周期数有限。

为应对这种限制,可采用固件或文件系统驱动器,对存储器写的次数进行逐次计数。这些软件将动态地重新映射这些块,在扇区间分享写操作。换句话说,万一写操作失败,软件通过写验证和重新映射向未使用的扇区授权写操作。

像RAM一样,闪存可以一个字节或一个字一次进行读或编程,但擦除必须是一次进行一个完整的块,将块中的所有位重新置位为1。这意味着需要花更多时间进行编程。例如,如果将一位(0)写入一个块,要对该块重新编程,就必须完全擦除此块,而不是仅仅重写该位。

  

一文读懂RAM、ROM、SRAM、DRAM、SDRAM等内存概念相关推荐

  1. 一文读懂JVM虚拟机:JVM虚拟机的内存管理(万字详解)

    JVM虚拟机的内存管理 文章目录 JVM虚拟机的内存管理 JVM与操作系统 Java虚拟机规范和 Java 语言规范的关系 java虚拟机的内存管理 JVM整体架构 一.PC 程序计数器 二.虚拟机栈 ...

  2. java内存屏障详解_一文读懂Java关键词之volatile作用(内存屏障)

    之前在一篇文章中跟大家一同学习了CPU缓存一致性,通过缓存一致性协议MESI我们可以让CPU各个计算核心中缓存的数据保持一致,避免造成计算结果的差异. 我们还知道Java内存模型中,各个线程还保存了一 ...

  3. “一文读懂“系列:Android中的硬件加速

    浅谈 前几天有个朋友问我"了不了解关于手机硬件加速方面的知识?",嗯?其实我也想知道... 于是笔者就去网上搜罗了文章再结合自己对源码的理解,总结了这篇关于硬件加速的理解. 关于屏 ...

  4. 从实验室走向大众,一文读懂Nanopore测序技术的发展及应用

    关键词/Nanopore测序技术    文/基因慧 随着基因测序技术不断突破,二代测序的发展也将基因检测成本大幅降低.理想的测序方法,是对原始DNA模板进行直接.准确的测序,消除PCR扩增带来的偏差, ...

  5. 一文读懂Faster RCNN

    来源:信息网络工程研究中心本文约7500字,建议阅读10+分钟 本文从四个切入点为你介绍Faster R-CNN网络. 经过R-CNN和Fast RCNN的积淀,Ross B. Girshick在20 ...

  6. 福利 | 一文读懂系列文章精选集发布啦!

    大数据时代已经悄然到来,越来越多的人希望学习一定的数据思维和技能来武装自己,虽然各种介绍大数据技术的文章每天都扑面而来,但纷繁又零散的知识常常让我们不知该从何入手:同时,为了感谢和回馈读者朋友对数据派 ...

  7. ​一文读懂EfficientDet

    一文读懂EfficientDet. 今年年初Google Brain团队在 CVPR 2020 上发布了 EfficientDet目标检测模型, EfficientDet是一系列可扩展的高效的目标检测 ...

  8. 一文读懂序列建模(deeplearning.ai)之序列模型与注意力机制

    https://www.toutiao.com/a6663809864260649485/ 作者:Pulkit Sharma,2019年1月21日 翻译:陈之炎 校对:丁楠雅 本文约11000字,建议 ...

  9. AI洞观 | 一文读懂英特尔的AI之路

    AI洞观 | 一文读懂英特尔的AI之路 https://mp.weixin.qq.com/s/E9NqeywzQ4H2XCFFOFcKXw 11月13日-14日,英特尔人工智能大会(AIDC)在北京召 ...

最新文章

  1. 逻辑覆盖测试(四)判定/条件覆盖
  2. 知识图谱、深度学习、AutoML,推荐系统与新技术结合将碰撞出怎样的火花?
  3. Java程序员从阿里面试回来,这些面试题你们会吗?
  4. BootStrap-select插件动态添加option无法显示
  5. 详解EM算法与混合高斯模型
  6. How is XSRF token retrieved from backend server
  7. c语言怎么实现模块化vc,原创:在C语言中大概实现VC++中的CArray部分功能的两种方法...
  8. YTU 2837: 编程题B-狐狸算卦
  9. 数学基础(0)-- 高等数学、概率论与数理统计
  10. SATI统计分析文献--以关键词为例
  11. 3分钟在线开通优惠费率的微信支付商户号(商户收款码)
  12. 阿里企业邮箱产品优势、功能、版本介绍
  13. 制作u盘winpe启动盘_U盘PE启动盘制作方法
  14. 计算机基础知识键盘知识,电脑键盘的一些基础知识和维护方法
  15. 1. 从键盘输入一系列字符(以回车符结束,字符的个数不超过 200 个),统计输入字符串中数字与非数字字符的个数,并将计数结果输出。
  16. 网易云课堂-微专业Java
  17. 服务器报错 http error 503.the service is unavailable怎么解决
  18. 微擎 人人商城 对接京东vop 对接京东商品,同步商品 地址,库存,价格,上下架等。七 (上)之异常订单 后台功能完善...
  19. Tkinter:文本框Entry
  20. 2021 安装centos

热门文章

  1. java网络编程技术学习笔记(b站【狂神说Java】网络编程实战讲解)
  2. ListView抖动的解决办法
  3. windows局域网传输文件
  4. 计算机光盘模式,Win7系统自带光盘刻录功能如何使用?
  5. 20230206英语学习
  6. 视差图转为深度图_纽劢研习社 | 深度图的非深度讲解
  7. echarts y轴数据添加单位
  8. django 使用系统自带登录装饰器login_required
  9. 计算机病毒辽师大教案,2019年四年级信息技术下册 第二课 计算机病毒知识二教案 辽师大版.doc...
  10. pe读linux硬盘分区工具_MBROSTool:U启制作工具,多分区多启动,多合一系统(win+linux),只需一拖一格...