目录
前言
半导体存储器分为 随机存取存储器(RAM)和 只读存储器(ROM)。
RAM 是一种可读/写存储器,其特点是存储器的任何一个存储单元的内容都可以随机存取,而且存取时间与存储单元的物理位置无关。计算机系统中的主存都采用这种随机存储器。
RAM 按照存储信息的原理不同,又可以分为静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM),主存储器主要由 DRAM 实现,靠近处理器的那一层缓存 (Cache)则由 SRAM 实现,它们都是易失性存储器。ROM 是非易失性存储器。
采用超大规模集成电路制造工艺,可以将半导体存储器集成在一个芯片上,一个芯片内主要包括了具有记忆功能的存储矩阵、译码驱动电路和读/写电路等
主存中各个存储单元的空间位置,是由一个地址号来表示的;通过地址总线可以给定一个存储单元的地址号,从而根据地址读出或者写入一个存储字。
-
译码驱动:将地址总线送来的地址信号翻译成对应存储单元的选择信号,该信号在读/写电路的配合下完成对被选中单元的读/写操作。
-
读/写电路:包括读出放大器和写入电路,用来完成读/写操作。
存储芯片通过地址总线、数据总线和控制总线与外部连接。地址线和数据总线共同反映了芯片的存储容量。比如,10 根地址线,4 根数据线,表示芯片的存储容量(单位为位)为:× 4 = 4 Kib。
-
地址线是单向输入的,其位数与芯片存储容量有关。
-
数据线是双向输入的,其位数与芯片每次可读出或写入的数据位数有关,从而也影响到存储容量。
-
控制线包括了读/写控制线和片选线。读/写控制线决定芯片进行的具体操作,片选线用来选择芯片。不同的存储芯片的控制线可能是不同的,有的芯片读/写控制线是两根(引脚名称一般是 和 ),有的芯片则读/写共用一根(引脚);片选线一般是一根(引脚 或),也有可能是两根。
半导体存储芯片的译码驱动,主要有两种方式:线选法 和 重合法。
-
线选法:是用一根字选择线(字线),直接选中一个存储单元的各位。这种方式结构比较简单,不过只适合用于容量不大的存储芯片。
-
重合法:用两个方向的地址,共同决定选中存储矩阵中的一个存储单元。相比 “一维” 的线选法,重合法就升级到了 “二维”,可以用更少的选择线实现对所有存储单元的选择。
上面是一个采用线选法译码驱动的存储芯片结构示意图。这个芯片有 8 位地址线和 8 位数据线,所以有 = 256 个存储字,需要 256 根字线来实现选中每个存储字。
如果采用重合法,则可以使用 X、Y 两个方向的地址译码器分别对 4 位地址进行译码,只需要两个方向各 16 根选择线,就可以直接选中 16 × 16 存储矩阵中的每一位。
当然,在这个示例中,如果用重合法实现 256 个字节(256 × 8)的存储器,需要使用 8 片上面结构的芯片,这样一来总的选择线并没有更少。不过如果考虑更大容量的存储器,比如地址线有 32 位、数据线仍为 8 位时,则线选法需要 根字线;而重合法是需要 8 片芯片,每片芯片只需 × 2 = 根选择线就可以实现。
一、SRAM
通常把存放一个二进制位的物理器件称为存储元,它是存储器最基本的构件。地址码相同的多个存储元构成一个存储单元。存储单元的集合构成存储体。
静态 RAM(Static RAM,SRAM)的存储元是用双稳态触发器(六晶体管MOS)来记忆信息的,因此信息被读出后,它仍保持其原状态而不需要刷新;这种读特性被称为“非破坏性读出”。
上图中, ~ 构成了 MOS 管双稳态触发器基本电路;而 、受行地址选择信号控制,、 受列地址选择信号控制,它们就像开关,将位线 A’ 、A 与数据线连接起来。由 ~这 6 个 MOS 管构成了静态 RAM 的基本单元电路,、则不包含在内,它们是芯片内同一列的各个基本单元电路所共有的。
下面是 Intel 2114 RAM 芯片的存储矩阵结构示意图。2114 芯片有 10 根地址线,其中 6 根行地址线、4 根列地址线,存储矩阵由 64 × 64 个基本单元电路组成,总容量为 1Ki × 4 = 4Kib
可能你会疑问,这是6根行地址线,4根列地址线 ,应该是64x16的存储矩阵啊,为什么会是64x64呢。实际上,当行地址线选中,列地址线选中,此时选中的并不是一个存储元,而是4个存储元。比如行地址线0和列地址线0选中的是4个存储元,一次性输出4位。对比之前,相当于,把缺的4根列地址线换成了数据线,当然,这只是便于理解的说法,其实这是“存储器的位扩展”,具体内容我会在下一篇文章阐述。
SRAM 使用触发器工作原理存储信息,因此在读出信息后,它仍会保持原来的状态,不需要刷新。不过如果电源掉电,存储的信息就会丢失,所以它属于易失性半导体存储器。
SRAM 的存取速度快,但集成度低,功耗较大,价格昂贵,一般用于 Cache。
二、DRAM
动态 RAM(Dynamic RAM,DRAM)是利用存储元电路中栅极电容上的电荷来存储信息的。若电容上存有足够多的电荷表示存 “1”,电容上无电荷则表示存 “0”。
常见的动态 RAM 基本单元电路有三管式和单管式两种。单管式只需要一个 MOS 管和一个电容,因此可以极大地提高集成度。
-
当读取数据时,字线上的高电平使 MOS 管 T 导通,如果电容 有电荷就会在数据线上产生电流,可以看作 “1”;反之如果没有电荷,数据线上就没有电流,看作 “0”。进行读操作之后,电容上的电荷就释放掉了,所以必须进行 “再生” 处理;这种读取方式为 破坏性读出。
-
对于写入操作,同样是字线高电平令 T 导通,如果数据线上为高电平则对电容充电,存入 “1”;如果为低电平则电容放电,存 “0”。
可以看到,DRAM 的基本存储元可以只使用一个晶体管, 所以它比 SRAM 的密度要高很多。为了进一步提高集成度,DRAM 采用 地址复用技术,地址信号分行、列两次传送,这样地址线是原来的一半,地址引脚数也可以减少一半,就能够进一步减小芯片的体积。
下面是 Intel 4116 RAM 芯片的整体结构和存储矩阵示意图。4116 芯片的存储矩阵为 128 × 128,共有 16 K 个单管 MOS 基本单元电路,容量为 16K × 1 位。本来芯片应该有 14 根地址线,不过为了减少芯片封装的引脚数,地址线只有 7 根。这就需要将完整的地址信息分成行地址、列地址两部分(各自 7 位),分两次传送。
相对 SRAM 来说,DRAM 具有容易集成、价位低、容量大和功耗低等优点,但 DRAM 的存取速度比 SRAM慢,一般用于大容量的主存系统。
DRAM 的刷新
由于电容上的电荷一般只能维持1 ~2ms,因此即使电源不掉电,信息也会自动消失。为此,必须在 2ms 内对所有存储单元恢复一次原状态,这个过程称为 再生 或者 刷新。
刷新的过程,实质上是先将原存信息读出,再由刷新放大器形成原信息并重新写入的再生过程。由于存储单元是被随机访问的,有些存储单元可能一直不会被访问,因此其存储的原信息将会慢慢消失。因此,必须进行定时刷新。一般要求在一定的时间内,对动态 RAM 的全部基本单元必须作一次刷新,这个时间称为 刷新周期,也叫 再生周期,一般取 2ms。
通常有三种刷新方式:集中刷新、分散刷新和异步刷新。
(1)集中刷新
在规定的一个刷新周期内,对全部存储单元集中一段时间进行逐行刷新;刷新时必须停止读/写操作。
例如,我们有一个芯片的存储矩阵为 128 × 128,它的存取周期为 0.5 μs,刷新周期为 2 ms(4000 个存取周期),那么对它的 128 行存储单元进行集中刷新需要:
0.5 μs × 128 = 64 μs
那剩余的 1936 μs(3872个存取周期)就可以用来读/写或者维持信息。由于在这 64 μs 内无法进行读/写操作,所以这段刷新时间被称为 “死时间”,也叫访存 “死区”。死时间占据存取周期的比例 64 μs / 2 ms × 100% = 3.2%,称为死时间率。
(2)分散刷新
对每行存储单元的刷新,分散到每个存取周期内完成。这样,每个存储周期 就分成了两段:前半段用来读/写或者维持信息,后半段 用来刷新。所以:
= +
同样以 128 × 128 存储矩阵的芯片为例,读/写周期 = =0.5 μs,那么存取周期 = 1 μs。逐行进行刷新,每隔 128 μs 就可以将存储芯片全部刷新一遍。
这样的好处是不存在停止读/写操作的死时间,而且刷新间隔比要求的刷新周期 2ms 短得多;缺点在于存取周期 变长了,使得整个系统速度变慢。
(3)异步刷新
异步刷新是前两种方式的结合,它既可以缩短 “死时间”,又能充分利用最大的刷新间隔 2ms。
还是之前的例子,对于 128 × 128 存储矩阵的芯片,存取周期 = 0.5 μs,可以让它把对 128 行的刷新平均分配到 2ms 的刷新周期内。也就是说,每隔 2ms ÷ 128 ≈ 15.6 μs 刷新一行,每次刷新的时间还是一个存取周期 = 0.5 μs。
这样一来,2ms 内用于刷新的时间仍然是 128 = 64 μs,而由于分散到了整个刷新周期内,每次刷新一行只停了一个存取周期;所以对于每行来说,刷新的间隔还是 2ms,而 “死时间” 缩短为 0.5 μs。
如果将 DRAM 的刷新安排在 CPU 对指令的译码阶段,由于这个阶段 CPU 不会访问存储器,所以这样就完全避免了 “死时间” 的问题,从根本上提高了机器效率。
DRAM 和 SRAM 的比较
目前,随着 DRAM 的容量不断扩大,速度不断提高,它的应用要比 SRAM 更加广泛。DRAM 主要用在计算机的主存中,而 SRAM 通常用于容量不大的高速缓存(Cache)中。
两者的特点可以比较如下:
三、ROM
ROM (Read Only Memory)最原始的定义是 “只读存储器”,一旦写入原始信息后就不能更改。所以ROM 通常用来存放固定不变的程序、常数和汉字字库,甚至用于操作系统的固化。它与随机存储器可共同作为主存的一部分,统一构成主存的地址域。
不过随着用户的需要和技术的发展,又出现了更多类型的 ROM,让用户拥有了修改数据的能力。
根据制造工艺不同,ROM 可分为固定掩模型 ROM(MROM)、一次可改写 ROM (PROM)、紫外线擦除电可编程 ROM(EPROM)、电擦除电可编程 ROM (EEPROM)、快擦写(Flash)存储器。
早期只读存储器的存储内容根据用户要求,厂家采用掩模工艺,把原始信息记录在芯片中,一旦制成后无法更改, 称为掩模型只读存储器(Masked ROM, MROM)。随着半导体技术的发展和用户需求的变化, 只读存储器先后派生出可编程只读存储器(Programmable ROM, PROM)、可擦除可编程只读存储器(Erasable Programmable ROM, EPROM)以及用电可擦除可编程只读存储器(Electrically Erasable Programmable ROM, EEPROM)。到 20 世纪 80 年代,又出现了闪速存储器 (Flash Memory), 它具有 EEPROM 的特点, 而速度比 EEPROM 快得多。
Flash
闪速存储器(闪存,Flash),又称快擦型存储器,是在 EEPROM 的工艺基础上发展而来的,性价比更好、可靠性更高。其主要特点有:
-
价格便宜、集成度高;
-
属非易失性存储器,适合长期保存信息;
-
能快速擦写(电可擦除),写入前必须先擦除,因此写比读要慢。
由于 Flash 的擦除、重写时间已经非常短,比一般的 EEPROM 要快得多,所以 Flash 已经具备了 RAM 的功能,可以与 CPU 直接相连。电脑的 BIOS 程序由于包含了开机后的自检程序和自举装载程序,一般都会固化到主板上的一个 ROM 芯片中;如今的电脑通常就会用 Flash 芯片来存放 BIOS 程序。
Flash 可以至少擦写 10000 次以上,而且是非易失性存储器,所以在需要周期性修改存储信息、并长期保存的场合,它是一个非常理想的存储器;比如工控系统、单片机中作为数据采集和存储器件,用于制作 U 盘和移动硬盘等。
目前随着闪存技术的发展,容量越来越大、价格越来越低,让大容量 Flash 取代磁盘成为了可能。用闪存技术做成 固态硬盘(SSD),可以代替传统的磁盘,速度更快,功耗更低,体积更小。如今很多笔记本电脑中都使用了 SSD,使得计算机平均无故障时间大大延长。
SRAM、DRAM 和 ROM 这 3 种存储器的特点可以总结如下。