【计算机组成原理考研复习】03、存储器

存储器概述

1、存储器层次结构

  1. 层次结构,从上到下(速度最快,容量最小,价格最高)
  2. CPU:芯片
  3. 寄存器
  4. Cache【高速缓冲存储器】
    1. 在主存和CPU之间,用来缓解主存和CPU速度不匹配的问题
  5. 内存:
    1. 主存:存放计算机运行期间所需的程序和数据
  6. 辅存:磁盘,硬盘
    1. 用来存放暂时不用的程序和数据,以及一些需要永久性保存的数据
  7. 外存:光盘,磁带

 

 

2、存储器分类

  1. 按存储介质
    1. 半导体
      1. MOS管,双极管
    2. 磁介质
      1. 磁盘
    3. 光介质
      1. 光盘
  2. 按存储方式
    1. 随机存储【所有地址上的数据被访问的时间是一样的】
      1. 主存,,Cache
    2. 只读存储【信息一旦写入以后,只能读出不能写入】
      1. BIOS就存储在这里面
    3. 顺序存储【按地址顺序访问】
      1. 磁带
    4. 直接存储【先找对应的小区域(磁盘的磁道),再在小区域上按顺序查找】
      1. 光盘

3、存储器的性能指标

    1. 存储容量
    2. 单位成本
    3. 数据传输速率
    4. 存储周期 = 存取时间 + 恢复时间

存储器的分类

1、半导体随机存储器【DRAM】

  1. 主存组成

 

 

    1. 存储元:电容 + MOS管
    2. 存储阵:n行存储行
    3. 译码驱动:通过地址总线,翻译成对应的地址,将存储阵 对应地址的 mos管施加高电平,读或者写数据
    4. 读写电路:通过读写线,控制从存储阵中 读写数据
      1. 两根读写线
      2. 一根读写线
    5. 片选线:进行读写操作的是不是这块芯片,对芯片使能
      1. 一块内存有8个存储单元,每个存储单元有一根片选线

 

 

    1. 对存储的描述
      1. 地址线:n 位地址 = 2^n个存储单元 = 2^n根地址线 = 2^n行存储行
      2. 数据线:n位存储字长 = 每行存储行有 n 个存储元(电容 + MOS管)= 宽度
      3. 总容量 :存储单元 * 存储字长
      4. 常见描述:
        1. 8K * 8位:2^13(存储单元) * 8bit(字长)
    2. 题目
      1. 存储体有几根引脚
        1. 片选线 + 1或2读写线 + 地址线 + 数据线
    3. 寻址

2、SRAM 和DRAM

  1. DRAM
    1. 存储元:栅极电容
      1. 破坏性读写
  2. SRAM
    1. 存储元:双稳态触发器【下图】
      1. 稳定读写
      2. A高B低:1
      3. A低B高:0

 

 

    1. 对比

 

 

    1. 刷新【一个存取周期 = 存取时间 + 恢复时间】这里的刷新就是在做恢复
      1. 栅极电容内的电荷不稳定,只能维持2ms,即便不断电,信息也会消失:2ms必须刷一次
      2. 触发器的结构稳定,只要不断电,触发器的状态就不会改变
      3. 问题
        1. 多久刷新一次:对于一般DRAM,2ms
        2. 每次刷新一个行存储单元
          1. 优化1:将译码器分为行、列译码器,选通线也变为原来的一半
          2. 优化2:将地址线复用,增加一个行缓冲器,一个列缓冲器,把地址先给行缓冲器,再给列缓冲器,然后访问对应地址的存储数据
      4. 刷新方式
        1. 分散刷新:按行进行刷新,每次存取完刷新一次,2ms可能不止刷新一次
        2. 集中刷新:在 2ms 内,集中将全部存储单元刷新一次
        3. 异步刷新:设置2ms 内仅刷新一次,时间太短,看起来像异步

 

 

    1. 现代:使用SDRAM 代替DRAM

3、只读存储器【ROM】

主存,包括RAM(内存条) + ROM(主板上的ROM)

  1. 用来存储BIOS系统
  2. 分类
    1. 一旦形成不可擦除
      1. MROM:掩只读存储器:工厂出厂定制
      2. PROM:可编程只读存储:用户可进行一次写,
    2. 可擦除
      1. EPROM
        1. E^2PROM,电擦除
        2. UVEPROM,紫外线擦除
      2. Flash Memory:闪存
      3. SSD:固态硬盘

主存与CPU的连接

1、连接原理

  1. CPU通过MAR和地址线连接主存,通过MDR和数据线连接主存
  2. 地址总线的位数决定了可寻址的最大内存空间

2、主存容量扩展

  1. 位扩展【】
    1. 一个存储单元只能连接CPU的一个数据线,扩展为8个存储单元,即:8K * 8bit
  2. 字扩展
    1. 增加存储单元数量
  3. 字位同时扩展
    1. 多个存储单元 + 译码片选法:形成可以选择存储单元组

 

 

3、存储芯片的地址分配和片选

 

 

  1. 线选法
    1. 01线选法,给需要使用的存储单元高电压1,其他的0,效率低,消耗的CPU线太多
  • 片选法
    1. 增加一个译码器,用来给需要使用的存储单元使能,(2/4译码器下图【输入两个二进制值,输出相应的4个值】,3/8)

4、存储器与CPU连接

  1. 74ls138译码片选器

双端口RAM和多模块存储器

1、双端口RAM

  1. 定义:一个存储器有两个独立端口,进行读写
  2. 操作
    1. 两端读
    2. 两端不同时写
    3. 两端写一个地址【error】
    4. 一端读,一端写【error】

2、多模块存储器

  1. 单体并行
  2. 多体并行
    1. 高位交叉编址
      1. 例如:两个内存,纵向编址,必须完成一个读写周期,才能访问下一个地址
    2. 低位交叉编址【组成双通道内存】
      1. 两个内存,横向编址,交叉访问,形成双通道!!
      2. a

Cache高速缓冲存储器

  1. cache工作原理
    1. 工作原理
      1. 将主存中部分数据放入cache,缓和CPU与主存间速度不匹配的矛盾
    2. 局部性原理
      1. 程序局部性:一个循环代码中,循环体和变量在一定时间内是需要高频访问的
      2. 空间局部性:最近一点时间内要使用的信息,很可能与现在使用信息在存储空间上是邻近的
      3. 时间局部性:最近未来要用的信息是现在在使用的信息,例如上面的循环
    3. 性能分析
      1. 两个指标
        1. Cache命中率:CPU需要的数据正好在Cache中
        2. 缺失率:不在Cache中
      2. 两种方式
        1. 先在Cache中找,再在主存中找
        2. 同时找,找到即停止
      3. 例题
        1. Cache命中率95%,访问Cache比主存快5倍,平均时间?
          1. 方式1:0.95t + 0.05*5t = 1.2t
          2. 方式2:0.95t + 0.05*6t = 1.25t

  1. 映射方式【Cache和主存是如何对应的】
    1. 【全相联映射】随机映射
      1. 存储规则:没有规则
      2. 主存地址结构:有效位 + 标记位 + 整块数据
      3. 步骤:
        1. CPU要找的主存地址与cache中标记匹配,
        2. 匹配成功,
          1. 有效位 = 0,命中失败
          2. 看有效位= 1时,命中,存取数据
        3. 匹配失败,在主存中查找
      4. 优点:充分利用空间
      5. 缺点:命中率低
    2. 【直接映射】块取余
      1. 存储规则:主存根据地址存放到Cache特定地址,行号 = 主存块号 % cache总存储行数,
      2. 主存地址结构:标记位(主存地址前几位) + cache行号(主存地址末几位) + 整块数据
      3. 优点:命中率高
      4. 缺点:空间利用率低
    3. 【组相联映射】组号取余
      1. 存储规则:将cache分组,主存号可以放入组中任意位置,所属组号 = 主存块号 % 总组数
      2. 主存地址结构:标记位 + 组号 + 整块数据
      3. 优点:综合上诉两种方法,效果较好
      4. 步骤
        1. 根据主存块号的后两位确定组号
        2. 匹配标记的块号
        3. 命中,再块内查找数据

  1. 替换算法【cache满了怎么办,如何替换数据】
    1. 随机换
      1. 原理:想换哪换哪
      2. 命中率:低
    2. FIFO先进先出换
      1. 原理:最早调入的被替换
      2. 命中率:低
    3. LRU【最近最少使用】
      1. 原理:块中添加计数位,从调入开始,CPU每次访问,被访问的记数清0,其他的记数+1。替换时,选择记数最大的替换,该块记数清0
        1. 替换完,比其值低的 + 1,【不做无效加法,省空间】
      2. 做题步骤
        1. 从需要替换的元素出发,往前看,最近没有使用过的就是需要置换的
    4. LFU【最不经常使用】
      1. 原理:CPU访问Cache,被访问的行 计数器 + 1,其他的不加,替换时,选择记数最小的替换
        1. 多个记数相同的行:FIFO替换
  2. 写策略【PS的操作在Cache中,操作完如何与主存中的数据一致?】
    1. Cache命中
      1. 全写法:CPU 每次写,都给Cache和主存同时写
        1. 很明显,写效率很低
      2. 写回法:CPU只写Cache,当前块内容要被替换时,再写回主存,
        1. 需要一个脏位:表示该地址块被修改过
        2. 效率高,但存在不一致的隐患
    2. Cache不命中【CPU要写的不在Cache中】
      1. 写分配
        1. 先把该块调到Cache中,再执行写操作
        2. 配合写回法
      2. 非写分配
        1. 直接对主存执行写操作,
        2. 配合全写法

虚拟存储器

  1. 概念:具有主存的性能,和辅存的容量,提高存储系统的性价比
  2. 页式虚拟存储系统
    1. 页表:
      1. 存放:主存
      2. 逻辑地址(虚拟地址)根据页表,对应主存中的物理地址
    2. 快表:
      1. 存放:SRAM【独立,不在Cache中】
      2. 加快访问速度

 

 

 

 

  1. 页表
    1. 外存块号:辅存中的页号
    2. 有效位:同cache中映射的有效位,记录映射是否有效
    3. 访问位:同cache中页面替换的记数位,记录最近一段时间页面的访问次数,替换时,把数值小的替换掉
    4. 脏位:同cache中写策略,记录逻辑地址中是否发生写操作,被替换时,再将这些写回物理地址(主存)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值