前言
关于存储器件实在种类繁多,让人眼花缭乱,甚至很多时候概念容易混淆。最近我突然听见硬件的同事谈及这些,感觉一时有点懵,所以决定了解一下存储器件这里面的门道,不至于再次听起又云里雾里。
一、存储器的概念
存储器的概念从名字看就显得特别简单明了了,是用于存储程序或者各种数据的一种具有“记忆”功能的设备。而在计算其中通常存储数据是通过二进制的形式来存储的(即"0"和"1");所以当将类似十进制数,英文字母和运算符号等数据存储到存储器中时,要转换成二进制的形式才能进行存储和操作。
二、存储器的分类
从大概念来看存储器一般分为"内存"和"外存"两种;内存是CPU能够直接寻址的存储空间,通俗的來说CPU能够直接去访问的存储空间;例如:RAM(随机存储器),ROM(只读存储器),CACHE(高速缓冲存储器)。外存并不直接与CPU打交道,外存则是指CPU缓存和内存以外的存储器;例如:U盘,硬盘等。
但是存储器通常大多数情况下所接触到的存储器分类大多数是以其掉电数据是否会丢失来划分的。分为:"易失性存储器"和"非易失性存储器"。下图是根据掉电是否丢失数据来划分各存储器种类。
三、各存储器的特点及用途
由于大多数情况是根据掉电丢失来划分的存储器。那就按照上图的结构来分析各不同种类的存储器。
易失性存储器
1、RAM(随机读取存储器)
通常RAM就是意识形态存取器的代表, 它有包含有DRAM(动态随机存储器)和SRAM(静态随机存储器)。
1.1 SRAM(静态随机存储器)
SRAM保存数据是靠晶体管锁存的;SRAM的工艺复杂,内部采用的是双稳态电路的形式来存储数据。所以生产成本高,所以价格更贵,但是SRAM速度快。同时SRAM集成度比较低,不适合做大容量的内存,一般是用在处理器的缓存里面。
1.2 DRAM(动态随机存储器)
保存数据靠电容充电来维持。容量比较大的RAM我们都选用的是DRAM。像SDRAM,DDR SDRAM都属于DRAM的一种。
-
SDRAM(同步动态随机存储器):RAM既然是存储器,那么就要传输数据,传输数据就是通信。通信又分同步通信和异步通信。DRAM和SRAM都是异步通信的,速率没有SDRAM和SSRAM快。所以现在大容量RAM存储器是选用SDRAM的。S(Synchronous同步)
-
DDR SDRAM(双倍速率同步动态随机存储器):DDR SDRAM和SDRAM的区别在于DDR(double data rate)双倍速率。SDRAM只在时钟的上升沿表示一个数据,而DDR SDRAM能在上升沿和下降沿都表示一个数据。DDR也一步步经过改良出现了一代、二代、三代,现在也有四代,自然价格也是水涨船高。
非易失性存储器
非易失性存储器常见的有ROM,FLASH,光盘,软盘,机械硬盘。他们作用相同,只是实现工艺不一样。
1、ROM(只读存储器)
在以前就是只读存储器,就是说这种存储器只能读取它里面的数据无法向里面写数据。实际是以前向存储器写数据不容易,所以这种存储器就是厂家造好了写入数据,后面不能再次修改。现在技术成熟了,ROM也可以写数据,但是名字保留了下来。ROM分为MASK ROM、OTPROM、EPROM、EEPROM。
-
MASK ROM(掩膜ROM):是制造商为了要大量生产,事先制作一颗有原始数据的ROM或EPROM当作样本,然后再大量生产与样本一样的 ROM,这一种做为大量生产的ROM样本就是MASK ROM,而烧录在MASK ROM中的资料永远无法做修改。
-
OTPROM(一次可编程存储器):OTPROM提供了介于MASK ROM和FLASH存储器之间的产品特性,出厂后用户只能写一次数据,然后再也不能修改了,一般做存储**。
-
EPROM(可擦除可编程只读存储器):这种存储器就可以多次擦除然后多次写入了。但是要在特定环境紫外线下擦除,所以这种存储器也不方便写入。
-
EEPROM(带电可擦可编程只读存储器):在使用的比较多因为只要有电就可擦除数据,就可以写入数据。
2、FLASH(闪存):是一种可以写入和读取的存储器,叫闪存,FLASH也叫FLASH ROM,有人把FLASH当做ROM。FLASH和EEPROM相比,FLASH的存储容量大。FLASH的速度比现在的机械硬盘速度快,现在的U盘和SSD固态硬盘都是Nandflash。FLASH又分为Norflash和Nandflash。
-
NOR flash和NAND flash的区别
1)、读写的基本单位不同。应用程序对NOR芯片操作以“字”为基本单位。应用程序对NAND芯片操作是以“块”为基本单位。要修改NAND芯片中一个字节,必须重写整个数据块。
2)、NOR闪存是随机存储介质,用于数据量较小的场合;NAND闪存是连续存储介质,适合存放大的数据。
3)、NOR地址线和数据线分开,所以NOR芯片可以像SRAM一样连在数据线上。NOR芯片的使用也类似于通常的内存芯片,它的传输效率很高,可执行程序可以在芯片内执行( XI P, eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。由于NOR的这个特点,嵌入式系统中经常将NOR芯片做启动芯片使用。而NAND共用地址和数据总线,需要额外联结一些控制的输入输出,所以直接将NAND芯片做启动芯片比较难。
4)、NOR的存储密度低,所以存储一个字节的成本也较高,而NAND闪存的存储密度和存储容量均比较高。
四、内存、cache与寄存器之间的关系
在理解三者之间的关系之前,还要再先了解一下寄存器与cache两个名词概念,事实上寄存器和cache也是存储器的一种。
1、寄存器
寄存器是中央处理器内的组成部份。它跟CPU有关。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器ACC)。
2、CACHE(高速缓冲存储器)
CACHE是位于CPU与主内存间的一种容量较小但速度很高的存储器。由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。
3、内存、cache与寄存器之间的关系
下图可以看出寄存器与内存的位置:
而在上面说到cache是直接为CPU提供服务的,所以其位置在内存与CPU之间。之所以会有cache是因为内存不能满足CPU的读写速度,于是便有了cache这个东西。内存一部分数据预先存到cache内,这样CPU就能直接以最快读取数据进行操作。
大致来说数据是通过内存->Cache->寄存器,Cache缓存则是为了弥补CPU与内存之间运算速度的差异而设置的的部件。
以上则是根据网上资料加上自己整理后对存储器的个人理解,若有理解有误或者不正确的地方还望大家多多指正,谢谢!
参考资料:https://blog.csdn.net/a568713197/article/details/82013420
http://blog.csdn.net/csuyishuan/article/details/52073421