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

news2024/11/16 1:31:43

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.coloradmin.cn/o/1231938.html

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

相关文章

华为---OSPF网络虚连接(Virtual Link)简介及示例配置

OSPF网络虚连接(Virtual Link)简介 为了避免区域间的环路,OSPF规定不允许直接在两个非骨干区域之间发布路由信息,只允许在一个区域内部或者在骨干区域和非骨干区域之间发布路由信息。因此,每个ABR都必须连接到骨干区域…

Fourier分析导论——第6章——R^d 上的Fourier变换(E.M. Stein R. Shakarchi)

第6章 上的 Fourier 变换 It occurred to me that in order to improve treatment planning one had to know the distribution of the at- tenuation coefficient of tissues in the body. This in- formation would be useful for diagnostic purposes and would con…

[github配置] 远程访问仓库以及问题解决

作者:20岁爱吃必胜客(坤制作人),近十年开发经验, 跨域学习者,目前于新西兰奥克兰大学攻读IT硕士学位。荣誉:阿里云博客专家认证、腾讯开发者社区优质创作者,在CTF省赛校赛多次取得好成绩。跨领域…

密码加密解密之路

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

浅析RSA非对称加密算法

目录 引言 凯撒密码 对称加密 非对称加密 ​编辑总结 引言 几月前在知乎上看到一个关于RSA公钥与私钥加解密的提问甚感兴趣,却一直没有时间去探究,今日浅得闲时以文记之。 在文章正式开始之前先讲一个小故事,在公元前58年时&#xff0c…

css 实现文字流光效果

经过调研发现大多滑块验证码中,有一些文字流光效果,因此在这里简单实现一下。 实现主要利用background 渐变背景以及backgorund-clip:text实现。具体代码如下 css部分 .slide {width: 300px;height: 40px;border: 1px solid #ccc;border-radius: 8px;…

猫12分类:使用yolov5训练检测模型

前言: 在使用yolov5之前,尝试过到百度飞桨平台(小白不建议)、AutoDL平台(这个比较友好,经济实惠)训练模型。但还是没有本地训练模型来的舒服。因此远程了一台学校电脑来搭建自己的检测模型。配置…

【鸿蒙最新全套教程】<HarmonyOS第一课>1、运行Hello World

下载与安装DevEco Studio 在HarmonyOS应用开发学习之前,需要进行一些准备工作,首先需要完成开发工具DevEco Studio的下载与安装以及环境配置。 进入DevEco Studio下载官网,单击“立即下载”进入下载页面。 DevEco Studio提供了Windows版本和…

pyQt主界面与子界面切换简易框架

本篇来介绍使用python中是Qt功能包,设置一个简易的多界面切换框架,实现主界面和多个子界面直接的切换显示。 1 主界面 设计的Demo主界面如下,主界面上有两个按钮图标,点击即可切换到对应的功能界面中,进入子界面后&a…

猫12分类:使用多线程爬取图片的Python程序

本文目标 对于猫12目标检测部分的数据集,采用网络爬虫来制作数据集。 在网络爬虫中,经常需要下载大量的图片。为了提高下载效率,可以使用多线程来并发地下载图片。本文将介绍如何使用Python编写一个多线程爬虫程序,用于爬取图片…

飞翔的小鸟

运行游戏如下: 碰到柱子就结束游戏 App GameApp类 package App;import main.GameFrame;public class GameApp {public static void main(String[] args) {//游戏的入口new GameFrame();} } main Barrier 类 package main;import util.Constant; import util.Ga…

Linux--网络编程

一、网络编程概述1.进程间通信: 1)进程间通信的方式有**:管道,消息队列,共享内存,信号,信号量这么集中 2)特点:依赖于linux内核,基本是通过内核来实现应用层…

线上bug-接口速度慢

👽System.out.println(“👋🏼嗨,大家好,我是代码不会敲的小符,双非大四,Java实习中…”); 📚System.out.println(“🎈如果文章中有错误的地方,恳请大家指正&a…

十四、Docker的基本操作

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

函数调用分析

目录 函数相关的汇编指令 JMP指令 call指令 ret指令 VS2019正向分析main函数 总结调用函数堆栈变化规律 x64dbg分析调用函数 IDA分析调用函数 函数相关的汇编指令 JMP指令 JMP 指令表示的是需要跳转到哪个内存地址,相当于是间接修改了 EIP 。 call指令 ca…

NX二次开发UF_CAM_ask_blank_matl_db_object 函数介绍

文章作者:里海 来源网站:里海NX二次开发3000例专栏 UF_CAM_ask_blank_matl_db_object Defined in: uf_cam.h int UF_CAM_ask_blank_matl_db_object(UF_CAM_db_object_t * db_obj ) overview 概述 This function provides the database object which …

使ros1和ros2的bag一直互通

很多文章都是先source ros1 然后source ros2,再play bag source /opt/ros/noetic/setup.bash source /opt/ros/foxy/setup.bash ros2 bag play -s rosbag_v2 kitti_raw00.bag 但实测会出问题: 为使ros1和ros2的bag一直互通 sudo apt update sudo apt install ros-foxy-ro…

axios的原理及实现一个简易版axios

面试官:你了解axios的原理吗?有看过它的源码吗? 一、axios的使用 关于axios的基本使用,上篇文章已经有所涉及,这里再稍微回顾下: 发送请求 import axios from axios;axios(config) // 直接传入配置 axio…

hdfsClient_java对hdfs进行上传、下载、删除、移动、打印文件信息尚硅谷大海哥

Java可以通过Hadoop提供的HDFS Java API来控制HDFS。通过HDFS Java API,可以实现对HDFS的文件操作,包括文件的创建、读取、写入、删除等操作。 具体来说,Java可以通过HDFS Java API来创建一个HDFS文件系统对象,然后使用该对象来进…

PPT幻灯片里的图片,批量提取

之前分享过如何将PPT文件导出成图片,今天继续分享PPT技巧,如何提取出PPT文件里面的图片。 首先,我们将PPT文件的后缀名,修改为rar,将文件改为压缩包文件 然后我们将压缩包文件进行解压 最好是以文件夹的形式解压出来…