MENU

存储器

October 7, 2019 • 我爱学习

存储器

概述

一、 存储器分类

  1. 按存储介质分类

    1. 半导体存储器 易失

      • TTL (晶体管、晶体管、逻辑) :集成度低,功耗高,速度快
      • MOS (金属、氧化物、半导体) : 功耗低,集成度高,构成现代计算机存储器(尤其是内存)
    2. 磁表面存储器(磁盘、磁带)
      磁头、磁载体
    3. 磁芯存储器 (王安博士 1948 年)core memory
      硬磁材料,环状元件
    4. 光盘存储器
  2. 按存取方式分类

    1. 存取时间与物理地址无关(随机访问)

      • 随机存储器 (RAM)
        在程序执行过程中可读可写
      • 只读存储器
        在程序执行过程中只读,存放系统参数或系统程序。
    2. 存取时间与物理地址有关(串行访问)

      • 顺序存储存储器:磁带
      • 直接存取存储器: 磁盘
  3. 按在计算机中的作用分类:

    1. 主存储器:

      • RAM (随机访问存储器)

        • 静态 RAM
        • 动态 RAM
      • ROM (只读存储器)

        • MROM: 掩膜型只读存储器
        • PROM:可编程只读存储器
        • EPROM:电可编程只读存储器
        • EEPROM:电可擦写可编程只读存储器
    2. Flash Memory:一种半导体存储器,速度比磁盘快,比主存储器慢
    3. 告诉缓冲存储器(Cache):存在于主存储器和 CPU 之间
    4. 辅助存储器: 磁盘、磁带、光盘

二、 存储器的层次结构

  1. 存储器三个主要特性的关系
    容量 速度 价位
    在此金字塔形的存储器层次结构中速度、容量、价位由上到下依次是:
    速度由快到慢
    容量由小到大
    价格由高到低

    • 为什么要整这么多种类?
      - 满足用户的需求,用户需求高速大容量低价格。因此要使用多种存储器构成一个存储体系
    • 存储体系:用两种及以上存储介质构成的存储器,用软硬件将它们连接成一个整体,使得对于某一级程序员来说可以得到一个理想的储存器。
    • 两个重要的存储层次
      缓存 - 主存层次
      主存 - 辅存层次

      对于应用程序员来说,这个整体拥有主存的速度,辅存的容量和价格。程序数据的调度由‘软硬件’实现。

      • 缓存 - 主存层次:这个层次主要解决速度问题,使用主存储器的地址 —— 实地址(物理地址)。
      • 主存 - 辅存层次:主要解决,容量问题,又称虚拟存储器,其地址由一个新的地址空间 —— 虚地址(逻辑地址)定义。
      • 逻辑地址:大家都知道,我们所接触的地址大多都从 0 开始,这边是逻辑地址,而真正的物理地址,是在程序被装入内存之前,由特定机构,将逻辑地址转换成物理地址。

        • 缓存实际上是由内容来查找的,即使有所谓的缓存地址,那也只是一个缓存块的编号(块号)。

主存储器

一、概述

  1. 主存储器的基本组成
  2. CPU 和贮存的联系

    • 连接信号分成三类
      数据总线:完成 cpu 和主存间的数据传输,直接连接在 MDR 上,双向的,可读可写
      地址总线:连接在 MAR 和主存间,单向传输,从 CPU 送到主存
      控制总线:读写,单向的。
  3. 主存中存储单元的地址分配

    • 大端(大尾)法:高位字节存放在低地址,低位字节存在高地址,以高位地址作为高地址。
    • 小端(小尾法):低位字节存放在低地址,高位字节存放在高地址,以低位字节地址为字地址
  4. 主存的技术指标
    (1) 存储容量:主存存放二进制代码的总位数
    (2) 存储速度:

    • 存取时间:存储器的访问时间,分为读出时间和写入时间
    • 存取周期:连续两次独立存储器操作 (读 / 写) 所需要的最小时间间隔分为读周期和写周期
      存取时间一般短于存取周期
    • 存储器的带宽 位 / 秒

二、半导体芯片

  1. 基本结构:
地址线(单向)数据线(双向)芯片容量
1041K*4
14116K*1
1388K*8

片选线:CS、CE
读 / 写控制线: WE(低电平写,高电平读)
OE(允许读) WE(允许写)

  1. 片选线的作用:让某些芯片同时工作
  2. 译码驱动方式
    (1) 候选法

    • 原理:地址译码器输入端输入 4 条线,输出 15 条字线,控制后面的 15 片存储器,读写控制电路有 8 条位线,将多片存储器并联读 / 写数据。当 $A_0$——$A_3$ 输入 4 位的信号时,地址译码器将 15 条输出线中的其中一条置为高电平,表示这根线上的存储器片有效。
    • 缺点:引出的地址线太多,如一个 1M*8 的存储器,地址译码器会输出出 1M 根线。

    (2) 重合法:把所有存储单元布局成二维阵列。

    • 原理:在重合法中,读 / 写数据线只有一位,每一个存储单元的位数也只有一位,当 X 地址 (行地址)给出 00000,Y 地址 (列地址) 给出 00000。则此时 $X_0$ 输出高电平,存储单元 0,00,31 被激活 (被选中),而列地址这边,$Y_0$ 输出高电平,$Y_0$ 所连接的开关被打开允许数据通过,至此,0,0 可以被读写。
    • 优势:当我们使用重合法控制 1M*8 的存储器时,我们将它们列成二维矩阵,将 20 位地址分成两部分,每一部分都是 10 位,则行地址译码器和列地址译码器输出的线都是 1K 条,合计 2K 条

三、随机存取存储器 (RAM)

  1. 静态 RAM (SRAM)

    • 静态 RAM 基本电路
      其中:
      $T_1$ ~ $T_4$ 触发器(存储数据)
      $T_5$、$T_6$ 行开关(一行共用)
      $T_7$、$T_8$ 列开关(一列共用)
      A 触发器源端(正常数据)
      $A'$ 触发器非端(相当于数据取反的结果)

      • 读操作
      • 写操作
    • 静态 RAM 芯片举例

      • Intel 2114 外特性
      • 因此 2114 有 1K*4 个基本单元电路,选用之前所提到的重合法进行译码驱动,但是当时的例子中,一个地址只包含了一位数据 (nK*1),因此在 2114 还需要进行改进使得一位地址可以包含四位数据 (nK*4)。
      • Intel 2114 矩阵 (64*64)
        4K 个存储单元可以按照重合法被组合成(64*64)的矩阵。如下图所示,我们可以将 64 列每 16 列一组分成 4 组。64 行保持不变。因此改进后的矩阵结构应该是:* 行地址保持不变,有 6 位行地址,经过译码之后可以产生 64 种行选信号,而行地址只有 4 位,经过译码之后产生 16 中列选信号,因此给出一个列地址,有四行被同时选中。

        Intel 2114 矩阵 (64*64) 写操作与之类似

        • 读写操作动态演示:

        读:

        读

        写:

        写

  2. 动态 RAM (DRAM)

    1. 动态 RAM 基本单元电路:
      动态 RAM 主要分为两种,分别是三管式 (左) 和单管式 (右)
    2. 三管式原理:
      T1,T2,T3 为控制管,数据通过它们进行读写,当读选择线有效时,T2 会被导通;写选择线有效,T3 会导通,外部数据可以通过 T3 对电容器进行读写。(单管式原理与三管式相似)
    3. 三管式工作原理:

      1. T4 是预充电管,当预充电信号有效时,T4 会被打开,Vdd 会经由 T4 对读数据线充电。
      2. 如果我们选择读出的话,读选择线有效,T2 导通。假如此时 $C_g$ 中保存的信息是 0,此时读数据线依然保持高电平(1)。假如此时 $C_g$ 中保存的信息是 1,此时 T1 被导通,此时读数据线被接地,因此读数据线中的数据为 0 (低电平)
        由此可见 :读出与原信息相反,写入与原信息相同
    4. 动态 RAM 芯片举例

      1. 三管动态 RAM 芯片 (Intel 1103) 读
        1103 的地址线有 10 根,每次读出写入只有 1K 的数据,说明其存储容量为 1K*1。并且每行地址译码以后每一行都对应了两根控制线,分别是读选择线和写选择线。由此可见在行地址译码的过程中,参与译码的不只是行选信号,还有读写信号。
      • 刷新放大器:Intel 1103 三管动态 RAM 中,每列都有一个刷新放大器用来形成再生信息。

        1. 单管动态 RAM 4116 (16K*1) 外特性:

        正常 16K 容量的存储器需要 14 根地址线,但是 4116 只有 7 根,这就涉及到地址线的复用,14 位地址通过两次传输进存储器中,首先接收到的是 7 位的行地址,地址放入行地址缓冲器中,在接收 7 位的列地址到列地址缓冲器再进行译码。
        4116 还有一个自己的小控制器,由行选通信号 (RAS),列选通信号 (CAS),读写控制信号 (WE)。产生三类时钟信号 (行 / 列时钟,写时钟)

        • 4116 读原理:
        • 读放大器:跷跷板电路(类似于非门),因此存储器中储存的数据是真实数据取反的结果(疑问:这样做有什么作用?
    5. 动态 RAM 刷新:刷新只和行地址有关

      • 集中式刷新 (存取周期为 0.5μs):将刷新的时间,集中在一个相对集中的时间段中操作。(以 128*128 矩阵为例)

      首先我们都知道,动态 RAM 的刷新时间间隔大概为 2ms,因此集中刷新将 2ms 分成两部分,前 3872 个周期 (1936μs) 用于 cup/io 对于存储器的读写操作,后 128 周期 (64μs) 用于存储器芯片自身的刷新,无论 cup 或 io 都无法同存储器进行数据交换,又称之为死区 (0.5μs * 128 = 64μs)。死时间率为:128/4000*100% = 3.2%.

      • 分散刷新:(存取周期为 0.5μs)
        $t_M$ 为正常的 cup/io 操作周期,$t_R$ 为刷新的周期
        $t_C$ = $t_M$ + $t_R$
        刷新间隔 128 个刷新间隔,会造成过度刷新。

        • 异步刷新 (分散和集中相结合):每隔 15.6μs 刷新一行。对于每 15.6μs 来说,是集中刷新,对于整个时间来说,属于分散刷新。死区为 0.5*128 = 64μs,并且如果将刷新安排在指令编译状态,就不会出现死区。
  3. 动态 RAM 和静态 RAM 的比较:
DPAMSRAM
存储原理电容触发器
集成度
芯片引脚少 (因为复用) 多 (不复用)
功耗
价格
速度
刷新

零散知识点

  1. 主存可由 RAM 和 ROM 组成
Last Modified: September 8, 2021