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