之前对存储器做过简单的汇总,参考这篇文章:
计算机/微机存储技术_路溪非溪的博客-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中单管的用的比较多。
可以看到上面有个专门的刷新电路。