zoukankan      html  css  js  c++  java
  • 第三章 存储器的层次结构

    总览:

    1. 存储器的分类
    2. 存储器的层次化结构
    3. 半导体随机存取存储器
      1. SRAM存储器
      2. DRAM存储器
      3. 只读存储器
      4. Flash存储器
    4. 主存储器与CPU的连接
    5. 双口RAM和多模块存储器
    6. 高速缓冲存储器
      1. Cache的基本工作原理
      2. Cache和主存之间的映射方式
      3. Cache中主存块的替换算法
      4. Cache写操作策略
    7. 虚拟存储器
      1. 虚拟存储器的基本概念
      2. 页式虚拟存储器
      3. 段式虚拟存储器
      4. 段页式虚拟存储器
      5. TLB(快表)
    8. 外存储器
    1. 存储器的基本概念
      1. 存储器的分类
        1. 按存储器介质分类:半导体、磁表面、磁心、光盘
        2. 按存取方式分类:RAM/ROM/顺序存取存储器/直接存取存储器
        3. 按在计算机中的作用分类:主存、辅存、缓冲存储器
      2. 存储器的性能指标
        1. 存储容量=存储字数*字长
        2. 单位成本:每位价格=总成本/总容量
        3. 存储速度:数据传输率=数据的宽度/存储周期
        4. 存储周期:从上一次访问存储器的操作开始(读/写),到下一次访问存储器的操作(读/写)为止,所花费的总时间。
    2. 存储器的层次化结构

    3. 半导体随机存取存储器
      1. 基本概念
        1. 基本结构

        2. 译码驱动方式
          1. 线选法:假设矩阵有N行,则地址线有条,向上取整;读/写控制电路与矩阵每行的位数相同
          2. 重合法:有X地址译码器和Y地址译码器,通过坐标定位单元,有单独的读/写控制电路
        1. 读周期指芯片两次连续读操作的最小时间间隔;读时间表示进行一次存储器读操作的时间,显然读时间小于读周期;写周期与写时间类似。
      2. SRAM存储器
        1. 规定:T1通、T2止,存"0";T1止、T2通,存"1"
        2. 电路图

      3. DRAM存储器
        1. 工作原理:电容上有电荷存"1",电容上无电荷存"0",需要刷新
        2. 电路图

        1. DRAM存储器的刷新:读出后再原样写入,如果题目没有特别注明,刷新一行的时间就是一个存储周期;如果说明了刷新操作由读操作和写操作一起执行,那么刷新一行的时间就按照两倍的存储周期计算。
          1. 集中刷新:集中在一段时间内刷新(死时间)
          2. 分散刷新:分散的周期性的进行
          3. 异步刷新:有计划的刷新
        2. 刷新和再生的区别

          对某个单元的刷新和再生操作过程是一样的,即读后恢复,但再生操作是随机的,只对所读单元进行,而刷新操作是按顺序定时一行一行进行的。

      4. 只读存储器
      5. Flash存储器

    4. 主存储器与CPU连接
      1. 位扩充:仅扩充数据线。
      2. 字扩充:仅扩充地址线,扩充的地址线作为片选信号。
      3. 字位扩充:先进行位扩充,对芯片进行分组,再进行自扩充。
    5. 双口RAM和多模块存储器
      1. 双口RAM
      2. 单体多字存储器:指令和数据在主存内必须连续存放才能发挥预期效果
      3. 多体并行存储器
         

        高位交叉编址的多体存储器(顺序存储)

        低位交叉编制的多体寄存器(交叉存储)

        特点

        每个模块内的体内地址是连续的,高位表示体号,低位表示体内地址

        程序存放在相邻的体中,低位用来表示体号,高位用来定位体内地址

        优点

        非常有利于存储器的扩充,只需将存储单元的编号往后加即可

        可以实现多模块流水线式并行存取,同时从主存中取出n条指令,大大提高存储器的带宽

        缺点

        由于各个模块一个接一个的串行工作,因此存储器的带宽收到限制

         

        并行的体现

        不同的请求源并行的访问不同的体

        同一请求源并行的访问不同的体

    6. 高速缓冲存储器(Cache)
      1. 基本工作原理:局部性原理(时间、空间)
        1. 主存和Cache的编址:主存中的每块大小应与Cache中每块的大小相同
          1. 主存

            主存的地址分为两部分:一部分用来寻找某个字块;另一部分用来寻找该字块中的字或字节。

          2. Cache

            Cache的地址也分为两部分:高c位表示Cache的块号,低b位表示其块内的字或者字节数,Cache的块数远小于主存块数。

            命中率的概念:CPU要访问的信息在Cache中的比例

            平均访问时间的概念:假设命中率为h,tc为命中时访问Cache的时间,tm为未命中时的主存访问时间,则Cache主存系统的平均访问时间ta为:

            Ta=h*tc+(1-h)*tm

            Cache主存系统效率的概念:

            用e表示效率,则e=tc/ta

            Cache的命中率只和Cache的容量、Cache的字块长度有关

        2. Cache的基本结构

      2. Cache与主存之间的映射方式
         

        直接映射

        全相联映射

        组相联映射

        优点

        1)实现简单。利用主存地址之间判断,即可确定所需字块是够在Cache中。

        2)无需考虑替换策略

        1) Cache的命中率可以提高

        2)"有位置就可以做",Cache的利用率提高

        对直接映射和全相联映射进行折中的一种方式,组相连映射中的一组看做直接相联中的一块。

        缺点

        1. 不够灵活
        2. 冲突概率高

        Tag的位数增加了,访问Cache时主存字块标记需要和Cache的全部"标记"进行比较,才能判断所访问的主存地址的内容是否已在Cache内。

         

        应用场合

        适合大容量Cache

        适用于小容量的Cache

         

        操作原理

        首先,CPU指令指出一个内存地址,该地址包含tag、块号、字等字段。然后,根据内存地址的块号c找到Cache中对应的块号,找到Cache中对应的块号后将该块中的标记和内存地址中的t位tag标记送入比较器比较。若相符且有效位为"1",即表示命中,然后用内存地址的低b位在Cache中读取所需要的字即可。若不相符或有效位为"0",则需要从主存中读取所需要的块来替换Cache中旧的块,同时将信息送往CPU,修改Cache的标记,如果原来有效位为"0",还得将有效位置"1"

        首先,CPU访存指令指出一个内存地址,该内存地址包含块号、字等字段。为了加快检索速度,Cache所有行的标记位和内存地址的块号一同送入比较器中比较,如果块号命中,则直接从Cache命中的块号中读取所需的字;如果块号不命中,则按内存地址读取这个字,同时吧内存块读入Cache行中。

        首先,CPU访存指令指出一个内存地址,该地址包含tag、组号、字等字段。通过组号找到Cache中对应的组,然后将Cache该组中每一块的tag和内存地址的tag送入比较器进行比较。如果Cache中由某块的tag与之符合,则表示Cache命中,通过内存地址的低b位确定需要该块中的哪一个字,然后进行存取操作。如果Cache中每行tag都与之不相符,则不命中,需要去内存取需要的字,并将内存中该字所在的块送入Cache中

         

      3. Cache中主存块的替换算法
        1. FIFO
        2. LRU
        3. 随机法
      4. Cache写操作策略:CPU更改了Cache的内容,会导致Cache的内容和主存内容不一致。
        1. 写回法
        2. 全写法
        3. 写一次法
    7. 虚拟存储器
      1. 基本概念
         

        页式虚拟存储器

        段式虚拟存储器

        段页式虚拟存储器

        划分单位

        把程序分段,再把每个段分固定大小的页

        优点

        由于页面的起点、终点地址是固定的,因此页表简单,调入方便,主存空间浪费小。

        段的分界与程序的自然分界相对应;段的逻辑独立性使他易于编译、管理、修改和保护,也便于多道程序共享;某些类型的段(堆栈、队列)具有动态可变长度,允许自由调度以便有效利用主存空间。

        兼备页式虚拟存储器和段式虚拟存储器的优点。

        缺点

        由于页面不是逻辑上的独立实体,因此处理、保护和共享都不如段式虚拟存储器方便。

        段的长度各不相同,段的起点和终点不定,给主存空间分配带来麻烦,而且容易在段间留下去多空余的不易利用的零散存储空间,造成浪费。

        在地址映射过程中需要多次查表。

         

      2. TLB(快表):快表是页表的子集,快表命中页表一定命中
    8. 外存储器
      1. 硬盘存储器
        1. 如何记录数据:归零制(RZ)、不归零制(NRZ)、"见1就翻"的不归零制"NRZ1"
        2. 技术指标:记录密度、存储容量、平均寻址时间、数据传输率、误码率
      2. 磁盘阵列
        1. RAID0
        2. RAID1
      3. 光盘存储器
        1. 只读型光盘CD-ROM
        2. 只写一次型光盘
        3. 可擦写光盘

    感想:

        上一章是看了难的不会做,这一章是看了和没看一样,根本不知道题目到底该咋做,TAT;昨天关word的时候居然忘了保存,今天写的80%都是昨天写的TAT;博客只总结了绝大部分的概念,对于计算题没有涉及。

  • 相关阅读:
    99. 恢复二叉搜索树
    337. 打家劫舍 III(dp+dfs)
    45. 跳跃游戏 II
    贪心
    460. LFU 缓存
    213. 打家劫舍 II(dp)
    MyScript 开发文档
    Android 全面屏体验
    Android Studio 导入自己编译的 framework jar
    cmake常用配置项
  • 原文地址:https://www.cnblogs.com/stormax/p/9397435.html
Copyright © 2011-2022 走看看