所有使用者对“存储器”这个名词可是一点都不陌生,因为所有的电子产品都必须用到存储器,且通常用到不只一种存储器。不过对于存储器种类、规格与形式,很多人容易搞混。比如,最近价格贵到炸的 NAND Flash,产业新闻里常常提到的DRAM,还有SRAM、SDRAM、DDR 3、DDR 4、NOR Flash … 这些又是什么?
先来一段百度百科。
存储器是用来存储程序和数据的部件,对于计算机来说,有了存储器,才有记忆功能,才能保证正常工作。存储器的种类很多,按其用途可分为主存储器和辅助存储器,主存储器又称内存储器(简称内存,港台称之为记忆体)。外储存器是指除计算机内存及CPU缓存以外的储存器,此类储存器一般断电后仍然能保存数据。常见的外存储器有硬盘、软盘、光盘、U盘等。
而简单来说,DRAM就是我们一般在用的内存,而NAND Flash 闪存,它在做的事情其实是硬盘。
(这段是给电脑小白的科普,大家可以酌情跳过)
不熟悉PC知识的朋友常常在选购设备时问,硬盘和内存到底有什么差别?我硬盘容量明明有 1TB,但PC还是跑得很慢哎?
硬盘和内存的差异,在于把电源关掉后、空间中储存的数据还会不会留着。就算关掉电源,硬盘的数据也不会消失。
但我们要运算数据时,如果 CPU 要直接从硬盘里面抓数据,时间会太久。所以”内存”会作为中间桥梁,先到硬盘里面复制一份进来、再让 CPU 直接到内存中拿数据做运算。这样会 比直接去硬盘抓数据,快约数百万倍。
打开任务管理器,就可以看到现在执行中程序占掉的内存空间,很多人就在骂Chrome 耗费的运算资源很高,内存使用率高于其他浏览器,多开几个分页内存就被吃完了。
所以简单来说,计算机在运作就像是办公一样,喝饮料、看书本、听音响… 想一次使用越多东西、桌面(内存)就要越大。但其他一时间没有要用到的东西,都会放在抽屉(硬盘)里面。所以硬盘就算再大,你一次想执行很多任务,还是得要看内存大小。
内存的处理速度比硬盘更快,但断电之后数据会消失,且价格也比硬盘贵。
当然存储器的层次结构里面还有更多细节。参见后文。
简单来说,CPU 里面也有一个储存空间,叫做 Register。要运算时、CPU 会从内存中把数据载入Register、再让Register中存的数字做运算,运算完再将结果存回内存中。毕竟 CPU 和内存终究还是两片不同的芯片,没有在同一片芯片里直接抓数据快。
还有一个概念是 Cache,这是CPU 和内存之间的中间桥梁。
速度来讲,就是:CPU里面的Register > Cache > 内存 > 硬盘。越上层(越靠近 CPU),速度就越快、价格越高、容量越低。
存储器的分类
电的存储器是指电写电读的存储器,主要分为两大类,如图一所示:
易失性存储器(Volatile Memory,VM):电源开启时资料存在,电源关闭则资料立刻流失(资料挥发掉),例如:SRAM、DRAM、SDRAM、DDR-SDRAM 等。
非易失性存储器(Non-Volatile Memory,NVM):电源开启时资料存在,电源关闭资料仍然可以保留,例如:ROM、PROM、EPROM、EEPROM、Flash ROM、FRAM、MRAM、RRAM、PCRAM 等。
▲ 图一:存储器的分类。
存储器的单元
存储器的“单元”(Cell)是指用来存取资料的最小结构,如果含有一个晶体管(Transistor)与一个电容(Capacitor)则称为“1T1C”;如果含有一个晶体管(Transistor)与一个电阻(Resistor)则称为“1T1R”;如果含有一个二极体(Diode)与一个电阻(Resistor)则称为“1D1R”。
存储器的每个“单元”不一定只能储存 1 个位的资料,由于我们对存储器容量的要求越来越高,每个“单元”能储存的资料越来越多,依照每个“单元”能储存的资料位数又分为:单层单元(Single-Level Cell,SLC)、多层单元(Multi-Level Cell,MLC)、三层单元(Triple-Level Cell,TLC)、四层单元(Quad-Level Cell,QLC)等。
存储器层次结构(Memory hierarchy)
要了解电子产品的各种存储器配置,就必须先介绍“存储器层次结构”(Memory hierarchy)观念。存储器层次结构是指如何将储存容量不同、运算速度不同、单位价格不同的多种存储器妥善分配,才能达到最大的经济效益,使产品的运算速度合理、储存容量合理、产品价格合理。
暂存器(Register,也译为寄存器):在处理器内,用来设定处理器的功能,主要是“暂时储存”设定值的地方。
快取存储器(Cache memory,翻译版本有缓存,快取缓存区,快取存储器;台湾翻译为快取。):在处理器内,执行程序时“暂时储存”程序与资料的地方,通常以 SRAM 制作。
主存储器(Main memory):在处理器外,“暂时储存”程序与资料的地方,通常以 DRAM 制作,目前已经改良成 SDRAM 或 DDR。
辅助存储器(Assistant memory):在处理器外,“永久储存”程序与资料的地方,包括:快闪存储器、磁盘机、光盘机、磁带机等。
不同种类的存储器分别有不同的储存容量、工作速度、单位价格:
储存容量:辅助存储器(GB)> 主存储器(MB)> 快取存储器(KB)> 暂存器(B)。
工作速度:辅助存储器(1ms)< 主存储器(10ns)< 快取存储器(1ns)< 暂存器(1ns)。
单位价格:辅助存储器 < 主存储器 < 快取存储器 < 暂存器。
存储器的应用
所有的电子产品都必须用到存储器,而且通常用到不只一种存储器,由于存储器的种类繁多,常常让使用者混淆,我们简单说明不同存储器之间的差异,图三为手机主要芯片的系统方块图(System block diagram),包括:应用处理器(Application processor)、基带处理器(Baseband processor)、运动控制器(Motion Controller)。
应用处理器主要是执行操作系统(Operating System,OS)与应用程序(Application program,App),暂存器与快取存储器目前都是内建在处理器内,其中暂存器用来设定处理器的功能,用来设定暂存器数值的程序,也就是用来趋动硬件的软件程序又称为“固件”(Firmware);快取存储器是在执行程序时用来“暂时储存”程序与资料的地方,由于在处理器内离运算单元比较近,可以缩短程序与资料来回的时间,加快程序的执行速度因此称为“Cache”。
由于快取存储器成本较高因此容量不大,如果执行程序时放不下,则可以退一步放在主存储器内,可是目前主存储器所使用的 SDRAM 或 DDR,属于易失性存储器,电源关闭则资料立刻流失,因此关机后资料必须储存在非易失性的辅助存储器内,早期辅助存储器使用磁盘机、光盘机、磁带机等,由于半导体制程的进步,目前大多使用快闪存储器(Flash ROM),或所谓的固态硬盘(Solid State Disk,SSD),固态硬盘其实也是使快闪存储器制作。
由于快取存储器(SRAM)与主存储器(SDRAM、DDR)是执行程序用来“暂时储存”程序与资料的地方,与处理器内的运算单位直接使用汇流排(Bus)连接,一般都是用“位”(bit)来计算容量;而辅助存储器是“永久储存”程序与资料的地方,由于一个位组(Byte)可以储存一个半型字,因此一般都是用“位组”(Byte)来计算容量。
▲ 图三:手机主要芯片的系统方块图(System block diagram)。
静态随机存取存储器(SRAM:Static RAM)
以 6 个晶体管(MOS)来储存 1 个位(1bit)的资料,而且使用时“不需要”周期性地补充电源来保持记忆的内容,故称为“静态”(Static)。
SRAM 的构造较复杂(6 个晶体管储存 1 个位的资料),不使用电容所以存取速度较快,但是成本也较高,因此一般都制作成对容量要求较低但是对速度要求较高的存储器,例如:中央处理器(CPU)内建 256KB、512KB、1MB 的“快取存储器”(Cache memory),一般都是使用 SRAM。
动态随机存取存储器(DRAM:Dynamic RAM)
以一个晶体管(MOS)加上一个电容(Capacitor)来储存一个位(1bit)的资料,而且使用时“需要”周期性地补充电源来保持记忆的内容,故称为“动态”(Dynamic)。
DRAM 构造较简单(一个晶体管加上一个电容),由于电容充电放电需要较长的时间造成存取速度较慢,但是成本也较低,因此一般制作成对容量要求较高但是对速度要求较低的存储器,例如:个人电脑主机板通常使用 1GB 以上的 DDR-SDRAM 就是属于一种 DRAM。由于处理器的速度越来越快,传统 DRAM 的速度已经无法满足要求,因此目前都改良成 SDRAM 或 DDR-SDRAM 等两种型式来使用。
同步动态随机存取存储器(SDRAM:Synchronous DRAM)
中央处理器(CPU)与主机板上的主存储器(SDRAM)存取资料时的“工作时脉”(Clock)相同,故称为“同步”(Synchronous)。由于 CPU 在存取资料时不需要“等待”(Wait)因此效率较高,SDRAM 的存取速度较 DRAM 快,所以早期电脑主机板上都是使用 SDRAM 来取代传统 DRAM,不过目前也只有少数工业电脑仍然使用 SDRAM。
可以记住一个简单的结论:SRAM 比较快、 DRAM 比较慢;SRAM 比较贵、DRAM 比较便宜。
这是我们平常在计算机中使用的内存,更精确的说法应该叫”内存模块”(Memory Module)。一个内存模块实际上就是由一块小电路板、再加上几块的 DRAM 芯片构成。图标中的内存模块上一共有 8 个 DRAM 芯片。让我们把一个 DRAM 芯片的内部结构剖开看看,会看到一个储存数组(Memorry Array)。
CPU 会给这个储存数组”行地址”和”列地址”,就可以选出一个”储存单元”。常见的储存单元包含了 4 bit 或 8 bit,每一个 bit 都会采用一个电路结构,我们称为 DRAM 的一个”基本储存单元”。
这个基本储存单元中包含了一个晶体管匹配一个电容。然后就可以视电容器是否有充电电荷存在、来判别目前的记忆状态。
“写入内存”的动作,就是由外部的数据线、对电容进行充电或放电,从而完成写入 1 或 0 的数字数据。
DRAM 使用一个晶体管(MOS)与一个电容来储存一个位的资料(一个 0 或一个 1),如图四(a)所示,当晶体管(MOS)不导通时没有电子流过,电容没有电荷,代表这一个位的资料是 0,如图四(b)所示;当晶体管(MOS)导通时(在闸极施加正电压),电子会由源极流向汲极,电容有电荷,代表这一个位的资料是 1,为了要将这些流过来的电荷“储存起来”,因此必须使用一个微小的电容,如图四(c)所示,DRAM 就是因为电容需要时间充电,所以速度比 SRAM 还慢。
▲ 图四:动态随机存取存储器(DRAM)的结构与工作原理示意图。
由于电容会有漏电的现象,导致电位差不足而使记忆消失,因此除非电容经常周期性地充电,否则无法确保数据能长久保存起来。
由于每个 DRAM 基本储存单元的电路结构非常的简单,所以功耗低、价格也较低。这样一来用低成本就能制造出大储存容量的 DRAM 芯片。缺点就是读写的速度慢(电容要充电放电),影响了 DRAM 的性能。
SRAM 的结构则较为复杂,一共有六个晶体管构成。我们能分别用 M1、M2、M3 到 M6 进行标记。这六个晶体管合起来才能保存一个 bit。
SRAM 芯片和 DRAM 芯片不太一样,不需要分成行地址和列地址分别选择,而且 SRAM 的设计相对来说又更加灵活,一个地址对应的储存单元数量可以是 8 bit、10 bit,或 32 bit、40 bit、64 bit 都行。
另外,晶体管的开关速度远比电容充电放电的速度还快,所以相对于 DRAM、SRAM 的读写速度比 DRAM 快很多。
然而 SRAM 中要储存一个 bit 就得用到六个晶体管。晶体管的数量一多、就会造成芯片的面积变大,从而带来集成电路难以变得更小、还有价格更贵的问题。
(SRAM 的价格比起 DRMA 要高达 1000 倍以上。比如 2010 年世代––—SRAM 的每单位储存价格是 $60/MB,DRAM 则是 $0.06/MB。)
同时每个晶体管都要耗电,晶体管越多、功耗就越高。考虑到价格高和功耗大,目前只能在一些很严苛的地方来使用 SRAM,比如上面提到的快取 (Cache)。
故目前”主存储器”还是使用 DRAM 技术,但小块用来拉速度的”快取”就是采用 SRAM。然而无论是 DRAM 还是 SRAM,一不供应电源就会丧失储存的数据,所以都叫做挥发性内存。
铁电随机存取存储器 FRAM
动态随机存取存储器(DRAM)是以一个晶体管加上一个电容来储存一个位(1bit)的资料,由于传统 DRAM 的电容都是使用“氧化矽”做为绝缘体,氧化矽的介电常数不够大(K 值不够大),因此不容易吸引(储存)电子与电洞,造成必须不停地补充电子与电洞,所以称为“动态”,只要电脑的电源关闭,电容所储存的电子与电洞就会流失,DRAM 所储存的资料也就会流失。
要解决这个问题,最简单的就是使用介电常数够大(K 值够大)的材料来取代“氧化矽”为绝缘体,让电子与电洞可以储存在电容里不会流失。目前业界使用“钛锆酸铅”(PZT)或“钽铋酸锶”(SBT)这种介电常数很大(K 值很大)的“铁电材料”(Ferroelectric material)来取代氧化矽,则可以储存电子与电洞不会流失,让原本“易失性”的动态随机存取存储器(DRAM)变成“非易失性”的存储器称为“铁电随机存取存储器”(Ferroelectric RAM,FRAM)。
NAND Flash 又是什么呢?继续讲讲非易失性的部分:
Flash(闪存)由于具备了重量轻、体积小、功率低等优点,被应用在各类电子产品的硬盘上。Flash 又可以分成 NOR 型 Flash 和 NAND 型 Flash。
NOR Flash 比 NAND Flash 更早导入市场。读取的速度较快,但写入的速度慢、价格也比 NAND Flash 贵。
目前用来储存操作系统的程序代码或重要数据,比如拿来做 ROM。像是生产 NOR Flash 的台厂旺宏就是因为打入任天堂 Switch 主机的 ROM 供应链,今年营收上看攀升。
NAND Flash 写入的速度快、价格较低,故目前以 NAND Flash 最为普遍。现在的 USB 硬盘和手机储存空间,就是用 NAND Flash 为主流技术。
另外,固态硬盘(Solid State Drive, SSD)也是以 NAND 型 Flash 为基础所建构的储存装置。SSD 不像传统硬盘(HDD)中有马达、读写臂等零件。速度慢、功耗高,对震动又相当敏感,很难用在小型行动装置中。
SSD 在读写数据时不会有噪音,耐震、传输速度快、重量又能缩减到 HDD 十分之一以上,现在已经成为个人计算机和笔记本电脑的主流储存设备。
总结:
依照停止供应电源的话、是否还能保留数据,分成”易失性”与”非易失性”存储。
易失性存储分成 DRAM 和 SRAM。
SRAM 更快但价格更贵,所以主存储器多用 DRAM、快取多用 SRAM。
非易失性存储分成 ROM 和 Flash。主要用来作为硬盘。
Flash 又分成 NOR Flash 与 NAND Flash,现在硬盘多以 NAND Flash 构成的 SSD 为主。