进阶 #hardware#memory

随机存取存储器

RAM(Random Access Memory)是用存储阵列实现的大容量数据存储部件,是计算机中的"工作台"

什么是 RAM?

想象你在书桌上写作业:

  • 寄存器 = 你手边随手能拿到的笔和尺子(极小、极快)
  • RAM = 你的书包/桌面(大一些,拿东西稍慢)
  • 硬盘 = 书柜里的文件夹(非常大,但翻找很慢)

RAM(Random Access Memory,随机存取存储器) 就是计算机的”工作台”——它临时存放正在运行的程序和数据。

“随机存取”听着很玄,其实意思很简单:就像书架上的书,不管在第几层,你伸手拿的时间是一样的。RAM 的任何存储单元访问时间都相同。

寄存器 相比,RAM 的容量大得多(GB 级),但速度较慢。

从寄存器到存储器阵列

一个 寄存器 存储 N 位数据,但存储容量有限。要扩大容量,需要将大量存储单元组织成阵列

  • 字线(Word Line):选择哪一行(哪个存储单元)
  • 位线(Bit Line):读写被选中单元的数据
graph TD
    subgraph MEM[存储器阵列 4×4]
        direction LR
        C00[单元 0,0] --- C01[单元 0,1] --- C02[单元 0,2] --- C03[单元 0,3]
        C10[单元 1,0] --- C11[单元 1,1] --- C12[单元 1,2] --- C13[单元 1,3]
        C20[单元 2,0] --- C21[单元 2,1] --- C22[单元 2,2] --- C23[单元 2,3]
        C30[单元 3,0] --- C31[单元 3,1] --- C32[单元 3,2] --- C33[单元 3,3]
    end

    DEC[地址译码器] -->|字线 0| C00
    DEC -->|字线 1| C10
    DEC -->|字线 2| C20
    DEC -->|字线 3| C30

    A0[A₀] --> DEC
    A1[A₁] --> DEC

    IO[数据输入/输出] --- C00
    IO --- C10
    IO --- C20
    IO --- C30

N 位地址可以寻址 $2^N$ 个存储单元。例如:

  • 10 位地址 → 1024 个单元(1 KB)
  • 20 位地址 → 1,048,576 个单元(1 MB)
  • 32 位地址 → 约 43 亿个单元(4 GB)

地址译码器

译码器(Decoder) 将 N 位地址输入转换为 $2^N$ 条字线中的一条有效输出:

A₁A₀选中的字线选中的单元
00字线 0第 0 行
01字线 1第 1 行
10字线 2第 2 行
11字线 3第 3 行

译码器的核心是与门阵列——每个与门检测一个特定的地址组合。地址译码器的具体实现我们会在 译码器与编码器 中详细讲解。

SRAM 与 DRAM

SRAM(静态 RAM)

  • 每个存储单元由 6 个晶体管 组成(类似 SR 锁存器 结构)
  • 速度快,不需要刷新
  • 容量小,功耗较高
  • 用于 CPU 缓存(Cache)

DRAM(动态 RAM)

  • 每个存储单元由 1 个晶体管 + 1 个电容 组成
  • 速度较慢,需要周期性刷新(电容会漏电)
  • 容量大,成本低
  • 用于 主存(系统内存)
graph LR
    subgraph SRAM_Cell[SRAM 存储单元]
        T1[晶体管 1] --- T2[晶体管 2]
        T3[晶体管 3] --- T4[晶体管 4]
        T5[晶体管 5] --- BL[位线]
        T6[晶体管 6] --- BL̅[位线反]
    end

    subgraph DRAM_Cell[DRAM 存储单元]
        CAP[电容] --- TRANS[晶体管]
        TRANS --> DRAM_BL[位线]
    end

存储层次结构

现代计算机使用多级存储来解决”容量大、速度快、成本低”三者不可兼得的问题:

层级容量速度技术管理方式
寄存器几十字节~0.3 ns触发器编译器/程序
L1 缓存32~64 KB~1 nsSRAM硬件自动
L2 缓存256~512 KB~5 nsSRAM硬件自动
L3 缓存2~32 MB~15 nsSRAM硬件自动
主存(RAM)4~64 GB~50 nsDRAM操作系统
磁盘/SSD256 GB~2 TB~0.1 ms闪存/磁操作系统

读写操作

RAM 的基本操作只有两种:

  1. :输入地址 → 译码器选中单元 → 数据从位线输出
  2. :输入地址 + 输入数据 → 译码器选中单元 → 数据写入存储单元

小结

RAM 将 寄存器 的存储能力扩展到了 GB 级别。地址译码器是 RAM 的核心组件——它用少量的地址线控制大量的存储单元。下一个知识节点将学习如何用逻辑门和加法器构建 CPU 的核心计算部件——算术逻辑单元