硬件基础:存储器

之前对存储器做过简单的汇总,参考这篇文章:

计算机/微机存储技术_路溪非溪的博客-CSDN博客

这次,我们从数字集成电路的角度再次补充学习一下存储器的知识。

定义和分类

从这里面我们能知道一些关键词。

存储介质主要是半导体器件和磁性材料。

磁性材料因为有NS极性,可以表示两种状态,因此可以用来存储二进制数,比如早期的磁盘;

半导体器件通常分为双稳态电路或者CMOS晶体管,双稳态电路能保存0和1两种状态,CMOS晶体管有通和断两种状态,因此都可以用来表示和存储二进制数据或者程序。

存储元指的是存储的二进制位数,存储单元指的是一次最小可以读取的数据块。

比如8位二进制数,我们最少一次可以读写一个字节。

分类如下:

易失性,顾名思义就是说容易丢失;非易失性,就是说不容易丢失;

我们重点看下主流的半导体存储器:

ROM

ROM和RAM是很早期的概念了,沿用至今,存储器也一直在更新换代,现在的ROM也已经能读写了,但是因为历史原因,这个概念一直在使用,我们要知道的是,到了这个时代,不要以为ROM就真的只能读不能写。

Flash,闪存,就强调一个快。

RAM

双极型就是指以三极管为主要存储单元。

现在MOS型是主流。

计算机中主要的几种存储器类型

比如L1 L2常指一级缓存、二级缓存。

主存指的是内存;

像硬盘、Flash这些都属于外存。

顺序存储

顺序存储器SAM并不是说是一种RAM或者一种ROM,更多的是指一种存储方式,一种存储原理,在有些地方比如单片机里的有些寄存器就用到了这样的存储结构。

在存取信息时,只能按存储单元的位置,顺序地一个接一个地进行存取的存储器。最典型的是磁带存储器。

了解即可,现在很少听到这种说法了。

这里有个FIFO和FILO的概念可以了解下。

描述了存和取的两种方式。

另外,这个移位寄存器的原理也可以学习下。

比如:

1位

多位

可实现并行输入和并行输出。

这里更多的是了解一种存储方式,而不是某种存储介质。

ROM

注意,不能写入数据是针对早期的ROM来说的。

ROM的工作原理基本如下所示:

我们指定一串地址码,对应的存储器里有地址译码器;

控制逻辑控制数据的读和写。

等等。

比如早期由二极管组成的ROM

现在基本都是使用MOS了

核心原理无非就是晶体管的导通和关断,以此来识别是1还是0

根据地址选中“字线”,然后从“位线”上将数据读出去,就和行列阵差不多。

PROM

PROM是早期的一种只读存储器,而且,只能写入一次。

PROM内部是通过熔丝来记录二进制状态的,编程时需要加约20V的高电压。

当熔丝保持连接的时候,读出来的就是高电平,也就是1,当熔丝熔断,读出来的就是0

新的PROM全是1,我们编程时将需要变成0的地方给熔断。

由此可见,这种就是一次性的。

这是三四十年前的产品了,当时编程还需要专门的高压编程器。

了解即可。

EPROM

PROM只能读,不能写,是一次性的存储产品。

随着技术的发展,出现了可改写的只读存储器EPROM。

EPROM可以擦除原来的信息,然后再写入新的信息。

不过,那时候的擦除比较麻烦,需要用紫外灯照射大概几十分钟,才能将里面的数据给擦除。编程的时候也是使用的高压编程器。

中间的透明区域就是照紫光灯的地方。

现在已经被淘汰了。

它存储的时候是通过层叠栅MOS管的浮栅来实现的,如下所示:

这里提一下,我们常说的几纳米工艺,这里的几纳米几纳米就是指的MOS管中间的沟道距离。

写入的时候是通过给MOS管栅极和漏极加高电压,然后将沟道的电子给引入浮栅之中,从而形成封锁,因为周围是二氧化硅绝缘层,断电之后电子就可以保存在浮栅之中很长时间。

擦除的时候,是通过照射紫外灯,浮栅中的电子在强光的照射下获得能量,然后逃逸出去回到原来的位置。

新的EPROM默认读出来都是1,此时浮栅中还没有电子,处于1状态。

当写入0之后,浮栅中就有电子了,读出来也就是0了。

写入数据的过程,实际就是注入电子的过程。

因此,EPROM有个特点,就是编程(加高压)时只能把1写成0,不能把0写成1,只有用紫外线照射时才能将0写成1,也就是释放电子。注意区分编程(写)、读和擦除。只有先擦除才能编程,因为不擦除就没法把0写成1,也就没法写入想要写入的数据。

EEPROM

到了EEPROM,又有了很大的改进。

擦除时只需要常规电压即可,约12V,编程时也是差不多的电压。

小插曲:我发现高低电平,最终都是通过各种控制方式接入地或者电源。

擦除过程,释放电子,恢复成1,如下:

编程过程,锁住电子,存入0,如下:

同样的,编程之前要擦除,和EPROM不同的是,EPROM只能整片整片地用紫外光擦除,EEPROM可以一位一位地用电擦除。

EEPROM现在用的还是蛮多的。

注意,有时候用单片机操作某个EEPROM时,只接入了3.3V或者5V电压,但是EEPROM明明是要用12V电压才能工作呀?这是因为EEPROM芯片内部集成了升压模块。

Flash

现在的嵌入式主流存储器,SD卡、U盘等都属于这种类型。

ROM一般都要先擦后写,只要写了,就随时能读。

擦和写才是存储的关键。

就是因为只能把1编程成0,而不能把0编程成1,所以必须要先擦除才能写。

每次擦除以块为单位。不过这几个缺点我们平时使用时看不到,因为有内部的控制器帮我们处理掉了,比如读写干扰就通过校验给规避掉了。所以为什么新买的SD卡或者TF卡一般都要先格式化一次呢,那就是整片擦除。

Flash一般只用常规电压来驱动即可,比如3.3V、5V等。

擦写的核心原理也是电子的存储和释放。

NOR FLASH,内部是或非门的结构not or

这里说的数据线和地址线指的是内部的结构组成,不是外部引脚的接线。

NAND FLASH,内部是与非门的结构,not and

仅供参考,具体以芯片手册为准。

RAM

一般分为SRAM和DRAM

SRAM

静态存储器SRAM内部由双稳态电路(锁存器)构成。

SRAM的最大特点就是“快”,缓存就是用SRAM来做的,CPU内部寄存器也是用SRAM来做的,总而言之,就是一个字:快、快、快、……

当然,电池没电了,数据还是会丢失。只是一种弥补,并非解决。

其实掉电丢失,很多时候就需要这样的特性,内存就是这样的,就相当于整个应用是个局部变量,每次开机后都会重新跑一遍程序,程序还是原来的状态,如果是保存起来的,反而麻烦,还得恢复到新的状态。只保留一些必要的信息,其他信息每次开机都是稳定的流程。

因为使用了锁存器,所以不需要擦除就能写,但换来的就是掉电之后锁存器的状态就丢失了,也就是SRAM的数据就丢失了。因为锁存器需要电平才能正常工作。

常规结构简略图如下:

仅供参考,具体以芯片手册为准。

用的器件较多,所以SRAM的成本还是蛮高的,可以看到实现1位数据的存储需要6个MOS管。

DRAM

动态存储器DRAM相比SRAM速度没那么快,但是成本比SRAM要低。

为什么DRAM速度没那么快呢?因为DRAM需要定时刷新。

MOS管的分布电容,里面的电荷存储时间是有限的,所以为了避免电荷释放掉,就需要定时刷新。如果不刷新,电容电量就没了,数据状态也就改变了。

现在电脑的内存DDR就是使用DRAM来做的。

SRAM实现一位数据的保存需要6个管子,而DRAM只需要1个,多的也只需要3个。

图中的电容Cs就是用来存储0和1的。

电容有电就是1,电容没电了就是0。

一般20ms左右就需要刷新一次。

3管的示例:

这里的电容C就是MOS管分布电容。

了解即可。

更多详细内容查阅相关资料。

大容量DRAM中单管的用的比较多。

可以看到上面有个专门的刷新电路。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言指针进阶之一字符指针

目录 1.指针知识回顾 2.字符指针 2.1字符指针的一般使用 2.2字符指针的另外一种使用 1.指针知识回顾 ①.指针就是个变量,用来存放地址,地址唯一标识了一片空间。 内存会划分成一个个的内存单元,每个内存单元都有一个独立的编号&#xff0…

Vue深入学习3—数据响应式原理

1、数据响应式原理 1.1、MVVM是什么? 简单来说,就是数据变了,视图也会跟着变,首先你得定义一个带有{{ }}的模板Model,当数据中的值变化了,视图View就会跟着变化;视图模型View-model是模板Model和…

C++ 类的初始化列表

C 中的类必须使用初始化列表的 4 种情况&#xff1a; 一&#xff0c;继承于一个基类&#xff0c;这个基类的构造函数有参数时。 #include <stdio.h> #include <stdlib.h>#pragma pack(4) class CBase { public:CBase(int value): bBaseValue(value){}~CBase(){}p…

代码随想录算法训练营31期day4,力扣24+19+02.07+142

24&#xff0c;动指针 class Solution { public:ListNode* swapPairs(ListNode* head) {//建立虚拟头结点auto dummynew ListNode(-1);dummy->nexthead;for(auto pdummy;p->next&&p->next->next;){auto ap->next;auto ba->next;p->nextb;a->n…

详解SpringCloud之远程方法调用神器Fegin

第1章:引言 咱们作为Java程序员,在微服务领域里,Spring Cloud可谓是个耳熟能详的大名。它提供了一套完整的微服务解决方案,其中就包括了服务间的通信。在这个微服务中,有一个成员特别引人注意,它就是Feign。 那Feign到底是什么呢?简单来说,Feign是一个声明式的Web服务…

linux条件判断练习

1.实现自动生成相应的压缩包 1.写一个脚本&#xff0c;完成如下功能 传递一个参数给脚本&#xff0c;此参数为gzip、bzip2或者xz三者之一&#xff1b; (1) 如果参数1的值为gzip&#xff0c;则使用tar和gzip归档压缩/etc目录至/backups目录中&#xff0c;并命名为/backups/etc-…

1块9毛钱,修复拓牛TC1D智能垃圾桶盖子不能正常开合的故障

前言 21年9月份买了拓牛的智能垃圾桶&#xff0c;一直用的很流畅&#xff0c;再加上屋里没啥有机垃圾&#xff0c;也没有宠物&#xff0c;用上之后每次投入垃圾&#xff0c;之后都会盖上盖子&#xff0c;没有很多的异味散发&#xff0c;屋里也没有蟑螂等害虫。 再加上门口有帘…

Android开发学习-Activity

启停活动页面 1、启动和停止 startActivity(new Intent(原页面.this,目标页面.this)); startActivity(new Intent(this,ActFinishActivity.class)) 从当前页面回到上一个页面&#xff0c;相当于关闭当前页面&#xff0c;返回代码如下&#xff1a; finish(); 2、生命周期 …

鸿蒙:@Link装饰器-父子双向同步

子组件中被Link装饰的变量与其父组件中对应的数据源建立双向数据绑定。从API version 9开始&#xff0c;该装饰器支持在ArkTS卡片中使用。 需要注意&#xff1a;Link装饰的变量与其父组件中的数据源共享相同的值。Link装饰器不能在Entry装饰的自定义组件中使用。 一、装饰器使…

基于Python对二手车之家的数据采集与分析

1.1 用户需求 1.1.1 背景与现状 基于Python的二手车之家数据采集与分析的背景与现状分析 背景&#xff1a; 随着经济的发展和人们生活水平的提高&#xff0c;二手车市场逐渐兴起。二手车之家作为中国最大的二手车交易平台之一&#xff0c;提供了丰富的二手车信息&#xff0…

下载nacos 2.3 for arm64

客户组织安全测试&#xff0c;我们系统测出了好几个高危问题&#xff0c;其中大部分是关于nacos的。 原先的nacos版本太低了&#xff0c;是1.3的。现在&#xff08;2024.01&#xff09;已经是2.3了&#xff0c;应该装个新的。我们使用docker安装nacos&#xff0c;原本很简单的…

推荐几款便宜幻兽帕鲁游戏联机服务专用云服务器

随着互联网技术的发展&#xff0c;云服务器已经成为了许多游戏联机服务的首选。如果大家想要自行搭建幻兽帕鲁联机服务器&#xff0c;那么使用云服务器是一个很好的选择。下面&#xff0c;本文将推荐几款便宜幻兽帕鲁游戏联机服务专用云服务器。 幻兽帕鲁游戏对于服务器配置要求…

Windows 上面双网卡网络,配置为优先IPV4

多数网络游戏加速器是不支持IPV6的&#xff0c;即便支持IPV6也不好用&#xff0c;原因是IPV6在大陆并不是普及的状态&#xff0c;很多资源是没有的。 所以本文会教大家怎么让双IP栈的用户&#xff0c;怎么配置优先适用IPV4&#xff0c;并且IPV6也还可以用。 跟着我的步骤来&am…

互信息的简单理解

在介绍互信息之前&#xff0c;首先需要了解一下信息熵的概念&#xff1a;所谓信息熵&#xff0c;是指信息论中对一个随机变量不确定性的度量&#xff0c;对于随机变量x&#xff0c;信息熵的定义为&#xff1a; H ( x ) − ∑ x p ( x ) l o g p ( x ) H(x)-\sum_xp(x)logp(x) …

git安装步骤

安装环境&#xff1a;Windows10 64bit 下载 Git网址 &#xff1a;Git - Downloading Package 版本&#xff1a;Git-2.21.0-64-bit 第一步&#xff1a;双击下载后的Git-2.21.0-64-bit.exe&#xff0c;开始安装 安装开始 第二步&#xff1a;选择安装路径&#xff0c;点击[next]…

【云原生】Docker基于Dockerfile多级构建,实现缩小镜像体积

目录 一、基于上次的nginx的Dockerfile做多级构建 二、基于上次的php的Dockerfile修改做多级构建 三、基于上次的mysql的Dockerfile修改做多级构建 基于以上三个镜像构建 四、镜像体积是不是越小越好&#xff1f;为什么要缩减镜像体积&#xff1f; 五、缩小镜像体积的方法…

变相体罚的行为有哪些

你是否在无意中“伤害”了学生&#xff1f;每一位老师都如同辛勤的园丁&#xff0c;努力耕耘&#xff0c;期待花开。但在这个过程中&#xff0c;有些行为&#xff0c;虽不带皮肉之苦&#xff0c;却可能给学生的心灵留下难以愈合的创伤。今天&#xff0c;就让我们来谈谈这些隐蔽…

OpenHarmony—TypeScript到ArkTS约束说明

对象的属性名必须是合法的标识符 规则&#xff1a;arkts-identifiers-as-prop-names 级别&#xff1a;错误 在ArkTS中&#xff0c;对象的属性名不能为数字或字符串。通过属性名访问类的属性&#xff0c;通过数值索引访问数组元素。 TypeScript var x { name: x, 2: 3 };c…

2024最新幻兽帕鲁服务器多少钱一个?

幻兽帕鲁服务器多少钱&#xff1f;价格便宜&#xff0c;阿里云4核16G幻兽帕鲁专属服务器32元1个月、66元3个月&#xff0c;4核32G配置113元1个月、339元3个月&#xff1b;腾讯云4核16G14M服务器66元1个月、277元3个月、1584元一年。阿腾云atengyun.com分享阿里云和腾讯云palwor…
最新文章