『computer organization-2』memory

主存储器

一、存储系统概述

  • 存储器的分类:可按"介质"分类、按"访问方式"分类,按"功能"分类

    • 按介质分类:半导体存储器(易失) or 磁介质存储器 or 光盘存储器
    • 按访问方式分类:随机访问存储器(RAM) or 只读存储器(ROM)or 顺序访问存储器(Tape
    • 按功能分类:高速缓存 or 主存 or 辅助存储器
  • 存储器的性能指标:

    • 访问时间:给定地址 \(\Rightarrow\) 完成读(写)操作所需时间
    • 存储周期:两次访问存储单元之间的最小时间间隔
    • 带宽:即数据传输率
  • 半导体存储器:包括 "RAM" 和 "ROM"

    • SRAM:静态RAM,速度更也更,加电时信息能一直保持,一般用于制作Cache

    • DRAM:动态RAM,速度较便宜,每隔一段时间必须刷新一次,一般用于制作主存


    • PROM:一次性可编程ROM

    • EPROM 与 EEPROM:紫外线可擦除可编程ROM 与 可擦除可编程ROM

    • Flash ROM:闪存,本质上是电擦除可编程ROM,一般用于制作SD卡BIOS存储器图形卡


二、存储芯片结构

  • 存储单元电路:存储 1bit 二进制信息的电路,可实现状态写入读取

  • 存储芯片的容量描述:\(2^n \times m\),即 字数 \(\times\) 单字的位数

    • 存储位元:\(2^n \times m\) 个 bit
    • 地址线:\(n\) 条地址线 \(\text{A}_0\dots \text{A}_{n-1}\),可表示 \(2^n\) 个字(单向线)
    • 数据线:\(m\) 条数据线,可表示一个字的 \(m\) 个 bit(双向线,可读可写)
  • 一维地址结构:只有"行译码"

    • 译码电路:将二进制地址编码 \(\text{A}_0\dots \text{A}_{n-1}\) 转化为十进制独热片选信号,使唯一的字选线 \(\text{W}_i\) 处于工作状态
    • 数据线:读出写入字选线选中的那个字的各 bit 信号 \(\text{D}_0\dots \text{D}_{n-1}\)

  • 二维地址结构:"行译码" + "列译码",地址格式为 \(2^m \times 2^{n-m} \times n\)

    • 译码电路:将一维地址拆分行地址 + 列地址

      • 行地址:地址线 \(\text{A}_0\dots \text{A}_{m-1}\),用于选择某一行的所有字,编址范围 \(0 \sim 2^m - 1\)
      • 列地址:地址线 \(\text{A}_{m}\dots \text{A}_{n-1}\),用于进一步选择某一行的其中一个字,编址范围 \(0 \sim 2^{n-m} - 1\)


三、存储器扩展

  • 位扩展:适用于 CPU 提供的数据总线 > 芯片数据总线 的情况

    • 位芯片数量 = CPU DBs / Chip DBs
    • 连线方式:各芯片共享地址线,分用低位数据线高位数据线

  • 字扩展:适用于 CPU 提供的数据总线 > 芯片数据总线 的情况

    • 字扩展芯片数量 = \(2^{\text{CPU ABs}} \div 2^{\text{Chip ABs}}\)
    • 连线方式:各芯片共享数据线,CPU提供的多余地址线用于设计选片信号CS(extra ABs Mux CS)

  • 混合扩展:适用于以上两种混合情况

    • 总扩展芯片数量 = 位扩展芯片数量 \(\times\) 字扩展芯片数量
    • 连线方式:同一字空间的 CS 连在一起,同一位空间芯片共享CPU数据总线

    注意:同地址范围的各芯片必须被同时选中(共享CS信号),同地址范围的各芯片分用高/低数据总线


    四、DRAM的刷新

    • 为什么要刷新:读操作是"破坏性"的,读"1"时放电,读"0"时充电,故会削弱原数据的强度,需要读后恢复

    • 传感放大器:让读出的信号更显著,"1" 的电平更高,"0" 的电平更低,故读出放大过程就是刷新过程

    • DRAM 刷新特点:按行刷新,刷新与CPU访存分开进行

    • "刷新间隔" 与 "刷新周期":

      • 刷新间隔:某一行两次刷新之间的时间差(不固定
      • 刷新周期:存储芯片固定的时间间隔,要求在一个周期内将所有内存单元都刷新一遍
    • 刷新方式:DRAM 需要在规定的刷新周期内所有内存单元都刷新一遍

      • 集中式刷新:将集中刷新间隔分为"集中访存"和"集中刷新"两部分,两阶段任务互斥

        该方式 集中刷新间隔 = 刷新周期,存在不能读写内存的访存死区

      • 分散式刷新:CPU与刷新电路交替访问内存,一个存储周期/刷新一行,最后一行刷新后又回到第一行

        该方式 分散刷新间隔 = 存储周期 \(\times\) 总刷新行数 \(\le\) 刷新周期(访存刷新绑定),不存在访存死区,但会降低系统速率

      • 异步刷新:保证一个刷新周期内将所有行都刷新一遍即可(单行刷新间隔不固定

        该方式 异步刷新间隔 = 刷新周期,兼顾以上两种方法优势,充分利用一整个刷新周期


『computer organization-2』memory
http://larry0454.github.io/2024/09/06/computer_organization/memory/
Author
WangLe
Posted on
September 6, 2024
Licensed under