内存学习(4):内存分类与常用概念3(ROM)

1 ROM介绍

ROM即为只读存储器,全拼是Read Only Memory。

1.1 “只读”的由来

ROM叫只读存储器是因为最早的ROM(MROM)确实是只能读取不能写入,一旦出厂不能再写,需要在出厂之前预设好它的数据,并且它是掉电不丢失的,又称为固定存储器。但是随着技术的进步以及发展的需要,PROM(一次写入之后就不可更改), EPROM, EEPROM, FLASH,SSD 在ROM的基础上被发明了出来,这些都是可编程ROM,也就是说既可以读又可以写,要想在只读存储器中存入或改变数据,必须具备特定的条件。所以ROM叫作只读存储器是受当时技术的限制,然后这个名字一直叫到了现在。

其实,现阶段ROM、RAM是可读与可读可写存储器的一种框架,MROM、PROM等是基于ROM框架的一种实现;DRAM、SRAM、SDRAM是基于RAM框架的一种实现

1.2 与RAM的比较

不同于前文讲述的RAM这种易失性存储器,ROM是非易失性存储器。

  • RAM:支持随机存取,读写速度会很快,但是它是一种易失性的存储芯片,如果断电,芯片内的数据就会消失。
  • ROM:非易失性,断电后数据不会丢失。

1.3 ROM结构图

image-20231120234333211

地址译码器根据输入地址总线进行译码,选择某条输出(称字线),由它再去使能驱动该字线的各位线,选通的字线与不同位线在存储单元体内形成独立的数据表示,一条字线对应一个字,字中的不同数据比特由多个位线提供。

下图a是以熔丝为存储元件的8×4ROM(通常以“字线×位线”来表示存储器的存储容量)的原理图。它以保留熔丝表示存入的是“0”,以熔断熔丝表示存入的是“1”。例如,存入字0的是“0110”,存入字1的是“1011”。

image-20231117002957892

从图中可以得到如下结论为:

  • 没有支持写操作的结构

  • CS为外部输入的片选使能信号,控制是否从此ROM模块进行数据输出,在ROM中,一般都设置片选端。当片选=0时,ROM工作;当片选=1时,ROM被禁止,其输出为“1”电平或呈高阻态。 片选信号可以用来扩展ROM的字数。

  • 地址总线发送地址,地址译码器选通所需要读取的地址,该地址的存储值输出到输出缓冲器

  • 熔丝可以理解为在出厂时是否通过电流将其烧断,标记存储值,如图(a)

  • 假设片选型号低电平使能,地址总线为000,则译码器会选通并拉高最上面一条线,即为打开所有如下图所示的存储单元的位选开关,实现最上面一条线上四个存储单元中数据的读取,最左侧和最右侧熔丝没断,连接到地为0,经过反向缓冲器输出为1;中间两个熔丝熔断,到地电阻无限大,电压为1,经过反向缓冲器输出为0

    image-20231117010106241

image-20231117003020676

  • ROM的地址译码器是与门的组合,它的输出是全部地址输入的最小项。可以把译码器表示成图b所示的与阵列,图中与阵列水平线和垂直线交叉处标的“点”表示有“与”的联系。
  • 存储单元体实际上是或门的组合,ROM的输出数即或门的个数。译码器的每个最小项都可能是或门的输入,但是,某个最小项能否成为或门的输入取决于存储信息,因此存储单元体可看成是一个或阵列。
  • 由上分析,可以从另一角度来看ROM的结构:它由两个阵列组成——“与”门阵列和“或”门阵列,其中“或”的内容是由用户设置的,因而它是可编程的,而与阵列是用来形成全部最小项的,因而是不可编程的。

2 ROM的分类与演进

2.1 MROM

掩膜式只读存储器,MROM(Mask Read Only Memory)芯片由厂家初始化,客户提出自己的要求,需要往里面写入什么数据,厂家生产芯片的时候,就会使用一种掩模式技术,把数据直接写进芯片。厂家一旦写入信息,以后任何人不能重改。这种芯片,只能读出数据,不能往里面写数据。这也是ROM的由来。

其原理图如下

image-20231121004051289

从中可以看到,MOSFET源极连接关系在芯片掩膜中就确定了,所以MROM是无法编程的,其中的内容也是不会发生改变的。在MCU中,MROM一般用于实现一些固化于芯片内部的功能,如引导程序,某些内置的库函数等。

特点:可靠性高,但是灵活性差,只适合批量定制(需要生产掩模式模板),成本比较低。

2.2 PROM

可编程只读存储器,PROM(Programmable Read-Only Memory)为了解决上面的问题,PROM芯片应运而生。也称为OTPROM,一次编程唯读记忆体(One Time Programmable Read Only Memory,OTPROM)内部所用的晶片与写入原理同EPROM,但是为了节省成本,封装上不设置透明窗,因此编程写入之后就不能再抹除改写。这种芯片可以通过专门的PROM写入器,往芯片里面写入需要的信息。但只能写一次,之后不可更改。

image-20231121004253029

在出厂时,所有熔丝均处于图(b)的状态,即存储器中存储的内容是0。用户可对其进行编程,用大电流使源极熔丝熔断即可将此位置为1。此编程过程是一次性不可逆的,也就是所谓的一次编程(OTP)。

上面的原理图中描述的是基于熔丝原理的PROM,事实上,目前更为广泛使用的是反熔丝技术。二者的区别在于,熔丝(Fuse)在初始状态是闭合的,可通过编程使其断开;反熔丝(Antifuse)在初始状态是断开的,可通过编程使其闭合。反熔丝技术的基本原理见下图

image-20231121004343022

  • 典型产品是“双极性熔丝结构”,如果想改写某些单元,则可以给这些单元通以足够大的电流,并维持一定的时间, 原先的熔丝即可熔断,这样就达到了改写某些位的效果。
  • 另外一类经典的PROM为使用“肖特基二极管”的PROM,出厂时,其中的二极管处于反向截止状态,还是用大电流的方法将反相电压加在“肖特基二极管”,造成其永久性击穿即可。

2.3 EPROM

可擦除可编程只读存储器,EPROM(Erasable Programmable Read-Only Memory)。EPROM`芯片,可以擦除可以编程。虽然它也叫“只读”,但是需要说明的是

  • 可以进行多次重写
  • 重写的手段有一定的特殊性

根据用户擦除数据的手段不同,可以把EPROM分为:

  • UVEPROM:用紫外光照射8-20分钟,擦除所有信息。其一般用电信号编程用紫外线擦除,这种芯片要使用昂贵的陶瓷封装,预留一个石英玻璃所制的透明窗,以便进行紫外线曝光,以擦除原有信息。写入程式后通常会用贴纸遮盖透明窗,以防日久不慎曝光过量影响资料。而且在擦除过程中不能选择性地擦除存储字单元,如果用户需要改程序,必须擦除整个存储阵列。
  • EEPROM:也场记为E^2PROM,可用电擦除的方式擦除特定的字。EEPROM的擦除不需要借助于其它设备,它是以电子信号来修改其内容的,而且是以Byte为最小修改单位,不必将资料全部洗掉才能写入,彻底摆脱了EPROM Eraser和编程器的束缚。EEPROM在写入数据时,仍要利用一定的编程电压,此时,只需用厂商提供的专用刷新程序就可以轻而易举地改写内容,所以,它属于双电压芯片。 借助于EEPROM芯片的双电压特性,可以使BIOS具有良好的防毒功能,在升级时,把跳线开关打至“ON”的位置,即给芯片加上相应的编程电压,就可以方便地升级;平时使用时,则把跳线开关打至“OFF”的位置,防止病毒对BIOS芯片的非法修改。

EPROM与之后讲的EEPROM及Flash的基本原理是相同的,都是基于浮栅技术(Floating-gate MOSFET)。浮栅MOS管的结构示意图如下

image-20231121004455363

悬浮栅极位于两层二氧化硅绝缘层之间,因此存储于其中的电荷可以得到长久的保持。EPROM、EEPROM及Flash的Memory cell简化结构示意图如下

image-20231121004532660

三者的区别主要在于其编程的方式不同。

  • EPROM通过紫外线(UV)照射进行数据擦除,浮栅中的电荷形成光电流泄漏走
  • EEPROM与Flash均是通过超薄氧化层的Fowler-Nordheim隧道电流使浮栅充放电

EEPROM的Memory cell是由FLOTOX(Floating- gate tuneling oxide transister)及一个附加的晶体管(Transister)组成,由于FLOTOX的特性及两管结构,所以可以单元读/写。技术上,Flash是结合EPROM和EEPROM技术达到的,很多Flash使用雪崩热电子注入方式来编程,擦除和EEPROM一样用Fowler-Nordheim tuneling。但主要的不同是,Flash对芯片提供大块或整块的擦除,这就降低了设计的复杂性,它可以不要EEPROM单元里那个多余的Tansister,所以可以做到高集成度,大容量。另外Flash的浮栅工艺也有所不同,写入速度更快。

2.4 Flash

Flash Memory,闪速存储器。是英特尔公司90年代中期发明的一种高密度、非易失性的读/写半导体存储器。

  • 特点一:(可重写与非易失)Flash既有EEPROM的优点,断电后可以保存信息,又有RAM的特点,可以进行多次快速擦除重写,是一种全新的存储结构。同时由于需要先擦除再写入,因此闪存写的速度要比读的速度慢。
  • 特点二:(单电压)Flash属于真正的单电压芯片,它的读和写操作都是在单电压下进行。Flash是利用浮置栅上的电容存储电荷来保存信息,因为浮置栅不会漏电,所以断电后信息仍然可以保存。Flash的每一个记忆胞(存储阵列中的cell)都具有一个“控制闸”与“浮动闸”,利用高电场改变浮动闸的临限电压即可进行编程动作。
  • 特点三:(擦写粒度)Flash最大特点是必须按块(Block或Sector)擦除(每个区块的大小不定,不同厂家的产品有不同的规格), 而EEPROM则可以一次只擦除一个字节(Byte)。
  • 特点四:(存储密度)它的存储元只需要使用单个MOS管,因此每个存储元的体积比RAM存储元体积要更小,所以闪存的位密度要更高。也就是对于两块体积相同的芯片来说,工艺水平相同的情况下,闪存芯片上存储元的数量要比RAM更多,也就是保存更多的二进制比特位。Flash ROM的存储容量普遍大于EEPROM,约为512K到至8M KBit,由于大批量生产,价格也比较合适,很适合用来存放程序码。

Flash主要分为NAND型与NOR型。现在NAND Flash常用于固态硬盘、USB随身盘、记忆卡等用途,NOR Flash则用于BIOS/UEFI ROM晶片等用途。

虽然这种芯片可读可写,但由于其是由ROM发展而来,所以依然归为同时也称为ROM类的芯片。

2.5 SSD

SSD,固态硬盘(Solid State Drives),有控制单元和存储单元构成。闪存芯片作为存储单元,存储二进制数据。控制单元用来控制固态硬盘多块闪存芯片的读或者写。

与纯Flash的闪存区别在于控制单元不一样,但是其二者存储介质类似,都可以进行多次快速的擦除重写。

SSD速度快,功耗低,价格高。

个人电脑常用SSD取代传统机械硬盘。同时也由于SSD比机械硬盘造价高,所以像很多云存储中心主要还是使用机械硬盘,比如百度云。

3 ROM特点与相关产品形态

ROM所存数据稳定 ,断电后所存数据也不会改变;其结构较简单,读出较方便,因而常用于存储各种固定程序和数据,适合那些在生命周期中几乎不会被更改的软件。

  • 电脑和手机的操作系统、CPU和GPU的程序,这种装配了重要软件的只读记忆体也可叫作“固件”
  • 游戏机等可编程设备的软件也可以通过包含只读存储器的卡带进行分发s
  • ROM还可以指快闪记忆体,尽管后者除了“唯读”之外也能够“删除”体内资料。

3.1 bios芯片

image-20231116010726862

计算机的主存用来存放一系列的指令和数据。CPU的任务就是从主存中取指令并执行指令

  • RAM(主存)具有易失性,断电后数据全部消失,计算机关机后,主存中数据消失。
  • CPU作为计算机指挥中心,在起初需要做什么事情,均需要需要给它提供指令,只能根据写好的指令来一步一步地执行。
  • 刚开机的时候,主存里面没有数据指令,所以CPU就需要从主板上的一块ROM芯片上读取开机需要的指令,把操作系统、应用程序等指令数据重新调入主存。这块ROM芯片其实就是BIOS芯片。它里面存储了自举装入程序。ROM芯片是非易失性的,即便计算机没有被供电,ROM里面存储的自举装入程序相关的指令数据同样不会丢失。
  • 虽然Bios芯片通常是被集成在主板上。但在逻辑上,应该看作是主存的一部分。当提到主存的时候,除了熟悉的内存条之外,还应该加上BIOS芯片。两者结合才是一个完整的主存。CPU会给RAM和ROM进行一个统一的编址。

一些名词解释:

  • 自举装入程序:CPU在刚开始执行的那一段程序,根据那一段程序的指引,CPU可以指挥I/O系统,把辅存中存储的操作系统相关的数据放入主存。
  • 统一编址:如果ROM芯片的容量是1KB,那么CPU会把0~1023这1K个地址分配给ROM芯片;RAM芯片的地址其实就是从1024往后编址。这就是统一编制。

3.2 手机

购买手机的时候RAM指的是内存,ROM指辅存。

参考文献

ROM(只读存储器)_rom可以写入数据吗-CSDN博客
3.4只读存储器ROM-CSDN博客
只读存储器的工作原理_百度知道
唯读记忆体 - 维基百科,自由的百科全书
ROM - 活着的虫子 - 博客园
ROM、RAM存储器原理详解以及DRAM、SRAM、SDRAM 、FLASH存储器的介绍_rom的原理_17岁boy想当攻城狮的博客-CSDN博客
RAM,ROM,固态(SSD),硬盘它们间有何关系?_ssd属于rom吗-CSDN博客
RAM、ROM、硬盘及内存 - 知乎
ROM_51CTO博客_nero burning rom
浅谈存储器_prom管工作原理-CSDN博客
sec 16-04 Memory Concepts - YouTube
半导体存储器总结 | 高明飞的博客

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

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

相关文章

十四、Docker的基本操作

目录 (一)镜像命令 一、拉取Nginx 二、查看镜像 三、导出文件 四、删除镜像 五、加载镜像 (二)容器命令 一、例子:运行一个nginx容器 1、输入运行命令 2、使用命令查看宿主机ip 3、在外部浏览器访问 4、查看…

【机器学习】037_暂退法

一、实现原理 具有输入噪音的训练,等价于Tikhonov正则化 核心方法:在前向传播的过程中,计算每一内部层的同时注入噪声 从作用上来看,表面上来说是在训练过程中丢弃一些神经元 假设x是某一层神经网络层的输出,是下一…

【机器学习】036_权重衰退

一、范数 定义:向量的范数表示一个向量有多大(分量的大小) L1范数: 即向量元素绝对值之和,用符号 ‖ v ‖ 1 表示。 公式: L2范数: 即向量的模,向量各元素绝对值的平方之和再…

适合您的智能手机的 7 款优秀手机数据恢复软件分享

如今,我们做什么都用手机;从拍照到录音,甚至作为 MP3 播放器,我们已经对手机变得非常依恋。这导致我们在手机上留下了很多珍贵的回忆。 不幸的是,我们有可能会丢失手机上的部分甚至全部数据。幸运的是,这不…

1. hadoop环境准备

环境准备 准备三台虚拟机&#xff0c;配置最好是 2C 4G 以上 本文准备三台机器的内网ip分别为 172.17.0.10 172.17.0.11 172.17.0.12本机配置/etc/hosts cat >> /etc/hosts<<EOF 172.17.0.10 hadoop01 172.17.0.11 hadoop02 172.17.0.12 hadoop03 EOF本机设置与…

队列的实现和OJ练习

目录 概念 队列的实现 利用结构体存放队列结构 为什么单链表不使用这种方法&#xff1f; 初始化队列 小提示&#xff1a; 队尾入队列 队头出队列 获取队头元素 获取队尾元素 获取队列中有效元素个数 检测队列是否为空 销毁队列 最终代码 循环队列 队列的OJ题 …

MobaXterm如何连接CentOS7的Linux虚拟机?Redis可视化客户端工具如何连接Linux版Redis?

一、打开Lunix虚拟机,进入虚拟机中,在终端中输入ifconfig,得到以下信息&#xff0c;红框中为ip地址 二、打开MobaXterm&#xff0c;点击session 选择SSH&#xff0c;在Remote host中输入linux得到的IP地址&#xff0c;Specify username中可起一个任意的连接名称。 输入密码 四、…

【洛谷 P3743】kotori的设备 题解(二分答案+递归)

kotori的设备 题目背景 kotori 有 n n n 个可同时使用的设备。 题目描述 第 i i i 个设备每秒消耗 a i a_i ai​ 个单位能量。能量的使用是连续的&#xff0c;也就是说能量不是某时刻突然消耗的&#xff0c;而是匀速消耗。也就是说&#xff0c;对于任意实数&#xff0c;…

60 权限提升-MYMSORA等SQL数据库提权

目录 数据库应用提权在权限提升中的意义WEB或本地环境如何探针数据库应用数据库提权权限用户密码收集等方法目前数据库提权对应的技术及方法等 演示案例Mysql数据库提权演示-脚本&MSF1.UDF提权知识点: (基于MYSQL调用命令执行函数&#xff09;读取数据库存储或备份文件 (了…

GaussDB新特性Ustore存储引擎介绍

1、 Ustore和Astore存储引擎介绍 Ustore存储引擎&#xff0c;又名In-place Update存储引擎&#xff08;原地更新&#xff09;&#xff0c;是openGauss 内核新增的一种存储模式。此前的版本使用的行存储引擎是Append Update&#xff08;追加更新&#xff09;模式。相比于Append…

在网络攻击之前、期间和之后应采取的步骤

在当今复杂的威胁形势下&#xff0c;网络攻击是不可避免的。 恶意行为者变得越来越复杂&#xff0c;出于经济动机的攻击变得越来越普遍&#xff0c;并且每天都会发现新的恶意软件系列。 这使得对于各种规模和跨行业的组织来说&#xff0c;制定适当的攻击计划变得更加重要。 …

【Linux】进程间通信 -- 管道

对于进程间通信的理解 首先&#xff0c;进程间通信的本质是&#xff0c;让不同的进程看到同一份资源&#xff08;这份资源不能隶属于任何一个进程&#xff0c;即应该是共享的&#xff09;。而进程间通信的目的是为了实现多进程之间的协同。 但由于进程运行具有独立性&#xff…

密码加密解密之路

1.背景 做数据采集&#xff0c;客户需要把他们那边的数据库连接信息存到我们系统里&#xff0c;那我们系统就要尽可能的保证这部分数据安全&#xff0c;不被盗。 2.我的思路 1.需要加密的地方有两处&#xff0c;一个是新增的时候前端传给后端的时候&#xff0c;一个是存到数…

异步爬取+多线程+redis构建一个运转丝滑且免费http-ip代理池 (三)

内容提要: 如果说,爬取网页数据的时候,我们使用了异步,那么将数据放入redis里面,其实也需要进行异步;当然,如果使用多线程或者redis线程池技术也是可以的,但那会造成冗余; 因此,在测试完多线程redis搭配异步爬虫的时候,我发现效率直接在redis这里被无限拉低下来! 因此: 最终的r…

从0开始学习JavaScript--JavaScript中的集合类

JavaScript中的集合类是处理数据的关键&#xff0c;涵盖了数组、Set、Map等多种数据结构。本文将深入研究这些集合类的创建、操作&#xff0c;以及实际应用场景&#xff0c;并通过丰富的示例代码&#xff0c;帮助大家更全面地了解和应用这些概念。 数组&#xff08;Array&…

SystemVerilog学习 (11)——覆盖率

目录 一、概述 二、覆盖率的种类 1、概述 2、分类 三、代码覆盖率 四、功能覆盖率 五、从功能描述到覆盖率 一、概述 “验证如果没有量化&#xff0c;那么就意味着没有尽头。” 伴随着复杂SoC系统的验证难度系数成倍增加&#xff0c;无论是定向测试还是随机测试&#xff…

安全框架springSecurity+Jwt+Vue-1(vue环境搭建、动态路由、动态标签页)

一、安装vue环境&#xff0c;并新建Vue项目 ①&#xff1a;安装node.js 官网(https://nodejs.org/zh-cn/) 2.安装完成之后检查下版本信息&#xff1a; ②&#xff1a;创建vue项目 1.接下来&#xff0c;我们安装vue的环境 # 安装淘宝npm npm install -g cnpm --registryhttps:/…

软件测试/测试开发/人工智能丨基于Spark的分布式造数工具:加速大规模测试数据构建

随着软件开发规模的扩大&#xff0c;测试数据的构建变得越来越复杂&#xff0c;传统的造数方法难以应对大规模数据需求。本文将介绍如何使用Apache Spark构建分布式造数工具&#xff0c;以提升测试数据构建的效率和规模。 为什么选择Spark&#xff1f; 分布式计算&#xff1a;…

easyExcel注解详情

前言11个注解字段注解 类注解基础综合示例补充颜色总结 11个注解 ExcelProperty ColumnWith 列宽 ContentFontStyle 文本字体样式 ContentLoopMerge 文本合并 ContentRowHeight 文本行高度 ContentStyle 文本样式 HeadFontStyle 标题字体样式 HeadRowHeight 标题高度 HeadStyle…

Python将原始数据集和标注文件进行数据增强(随机仿射变换),并生成随机仿射变换的数据集和标注文件

Python将原始数据集和标注文件进行数据增强&#xff08;随机仿射变换&#xff09;&#xff0c;并生成随机仿射变换的数据集和标注文件 前言前提条件相关介绍实验环境生成随机仿射变换的数据集和标注文件代码实现输出结果 前言 由于本人水平有限&#xff0c;难免出现错漏&#x…