计算机组成结构—半导体存储器

目录

前言

一、SRAM

二、DRAM

[DRAM 的刷新](#DRAM 的刷新)

(1)集中刷新

(2)分散刷新

(3)异步刷新

[DRAM 和 SRAM 的比较](#DRAM 和 SRAM 的比较)

三、ROM

Flash


前言

半导体存储器分为 随机存取存储器(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,使得计算机平均无故障时间大大延长。

SRAMDRAMROM 这 3 种存储器的特点可以总结如下。

相关推荐
Redstone Monstrosity22 分钟前
字节二面
前端·面试
UestcXiye1 小时前
面试算法题精讲:求数组两组数差值和的最大值
面试·数据结构与算法·前后缀分解
严格格1 小时前
三范式,面试重点
数据库·面试·职场和发展
WG_173 小时前
C++多态
开发语言·c++·面试
鱼跃鹰飞4 小时前
Leetcode面试经典150题-130.被围绕的区域
java·算法·leetcode·面试·职场和发展·深度优先
鱼跃鹰飞13 小时前
Leetcode面试经典150题-349.两个数组的交集
算法·leetcode·面试
大二转专业15 小时前
408算法题leetcode--第七天
考研·算法·leetcode
程序猿进阶20 小时前
如何在 Visual Studio Code 中反编译具有正确行号的 Java 类?
java·ide·vscode·算法·面试·职场和发展·架构
无名之逆20 小时前
云原生(Cloud Native)
开发语言·c++·算法·云原生·面试·职场和发展·大学期末
andrew_12191 天前
腾讯 IEG 游戏前沿技术 一面复盘
java·redis·sql·面试