计组:四、存储器

  • 存储器:计算机系统的记忆设备,存放数据和程序。
  • 存储器的速度慢,CPU的速度快,二者的的增速也不一样——>存储器和CPU的速度不匹配,存储器的速度成为系统速度的瓶颈
  • DMA技术:存储器与 I / O 直接交换信息,不走CPU

存储器的分类

  • 存储器的分类
    1、按存储介质可分为半导体存储器,磁表面存储器,磁芯存储器,光盘存储器。

    • 半导体存储器:存储元件是半导体器件。现代采用集成电路来做半导体存储器。一般的掉电信息就会丢失;采用非挥发性材料制成的半导体存储器掉电后信息不会丢失。
      存储体 ------> 存储单元 ------>存储元件(放一个二进制位)。
      半导体存储存储器又可以分为双极型(TTL)存储器MOS型存储器
      TTL型速度高,价格贵,功耗大。
      MOS型制造简单,集成度高。

    • 磁表面存储器:在基体(金属或者塑料)表面涂一层磁性材料作为记录介质,用磁头在表面磁层上进行读写。
      由于磁表面物质具有磁滞回线特性,按照其剩磁状态来区分0和1。
      剩磁状态不会轻易丢失,具有非易失特性。

    • 磁芯存储器:在微小磁环中穿入驱动线和读出线。
      不宜失,体积、功耗大,已被淘汰。

    • 光盘存储器:利用激光在记录介质(一般是磁性材料)上读写,利用其热磁效应可以多次擦写。起初采用非磁性材料只能写一次,激光照射产生凹坑或改变介质膜的光学性质,读出时在读出光束的作用下,反射光的性质是不同的。

    2、按存取方式分,即存取时间与存储位置是否有关。

    • 存取时间与存储位置无关。包括两种:随机存储器RAM和只读存储器ROM。
      RAM-------分为静态RAM:SRAM和动态RAM:DRAM
      SRAM是基于触发器原理,速度快,结构复杂。
      DRAM是基于电容充放电原理,结构简单,但需要定时刷新。
      只读存储器中的只读的含义:不能随意对其存取,不是只能读。从MROM,到PROM,到EPROM,再到EEPROM。新出现的FLASH具有EEPROM的特点,但速度比EEPROM快的多。
    • 存取时间与存储位置有关。也包括两种:按顺序存取存储器和直接存取存储器。
      按顺序存取存储器,又叫串行访问存储器------不论要存取的信息处在什么位置,都要从始端开始按序寻找。
      直接存取存储器:如对磁盘进行存取时,先通过直接存取方式定位到某个磁道,在此磁道内通过顺序存取方式找到目标字块。

    3、按存储器在计算机中的作用分类,分为主存,辅存,缓存。

    • 主存:直接与CPU交互信息
    • 辅存:主存的后援,用来存放暂时不用的程序和数据。不能直接与CPU交换信息。
    • 缓存:用在速度不同的两个部件之间。如CPU和主存之间设置一个Cache。

,--------------------------
计组:四、存储器_第1张图片
,--------------------------

存储器的层次结构

  • 存储器的三个性能指标:速度,容量,位价(每位的价格)。三者不可兼得。
    三者的关系是金字塔结构,如下图:
    从上往下
    速度:快---->慢
    价格:高---->低
    容量:小---->大
    ,----------------


,-----------------


,-----------------
通过软件、硬件相结合将各个部件结合成一个整体,满足速度高,容量大,价格便宜。

  • 缓存-主存层次是为了解决CPU和主存速度不匹配的问题;运行时需要不断地将主存中的数据调入缓存,这个操作由硬件自动完成。CPU从Cache中读取数据比从主存中读取数据要快。
  • 主存-辅存层次是为了解决存储器容量的问题;由辅存存放暂时用不到的信息。主存和辅存间的信息调动是通过硬件和操作系统共同完成的。 主存-辅存层次不断发展,形成虚拟存储系统。主存的速度,辅存的容量、价格。
  • 虚拟地址:又叫做逻辑地址,用户/程序员实际能使用的地址大小远远超过主存的大小。使他们觉得自己占有一个很大的容量。
  • 物理地址:指的是主存的实际地址,是程序在执行过程中实际访问的地址。
  • 虚拟存储器技术是依靠硬件和操作系统一起,将逻辑地址变成物理地址。如虚地址的内容在主存,机器便可以立即使用。否则要先将虚地址的内容传到主存在为CPU所用。

主存储器

由RAM和ROM组成。

  • 主存的基本组成图
    ,-------------

    ,--------------
    现代计算机通常将图中的译码器、驱动器、读写控制电路集成在存储芯片上;MAR和MDR制作在CPU中。
    ,---------------

    ,------------------
    不同机器的字长是不一样的,可以包含数个字节。

  • 主存的技术指标:存储容量和存储速度。

    • 存储容量可以用字节数或者二进制位数来表示。
      存储容量 = 存储单元个数 * 存储字长
      存储容量 = 存储单元个数 * 存储字长/8

    • 存储速度:由存取时间存取周期来表示。

      • 存取时间:又叫存储器的访问时间-------启动一次读/写操作到完成该操作所需要的全部时间。即从存储器收到有效地址开始,产生有效数据输出或者数据被有效写入。
        读时间:从 CPU 给出地址信号到内容读到数据线上的这段时间。
        写时间:从CPU给出地址信号到数据线上的信息被写入目的单元的时间。
      • 存取周期:存储器进行连续两次独立的读/写操作–开始的最小间隔时间。如MOS型的存取周期是100ns,而TTL型的是10ns。
        读周期:连续两次读的最小间隔时间。
        写周期:连续两次写的最小间隔时间。
    • 存储器带宽:单位时间内存储器存取的信息量。

    半导体存储芯片简介

  • 存储芯片的结构如下图:(MAR,MDR已经在CPU中
    ,------------------

    ,-------------------
    地址线单向,数据线双向(读和写)。
    64K * 8 ---------64K个存储单元。每个存储单元8个存储元件。

  • 半导体芯片的译码驱动方式:线选法重合法

    • 线选法:用一根字选择线直接选中一个存储单元的各位。适合于容量不大的芯片。但如果容量太大的时候会导致每个存储单元都要一根线。如20根地址线,内部需要100万根线。如下如4根地址线------线选法的情况
      ,----------

      ,----------
    • 重合法
      行线和列线共同作用,如20根地址线,1M空间,只要1024+1024根内部线。
      如下图1K * 1内部线需要32 + 32(若采用线选法,则需要32*32根线)
      ,------

      ,--------

随机存取存储器----RAM

  • SRAM,静态RAM,static RAM
    • 基本单元电路-----触发器(由MOS管组成)
      SRAM速度快,结构复杂,常用于Cache
  • DRAM,动态RAM,dynamic RAM
    • 基本单元电路:三管MOS和单管MOS
      ,—

      ,—

      ,—
      靠电容存储电荷的原理来记录信息。
      电容上有足够多的电荷,视为1;
      电容上没有电荷,视为0。
      集成度更高,功耗更低。其中单管MOS集成度更高。

    • 读出操作是破坏性读出,电容上的电荷一般只能维持1到2ms,即使不掉电,信息也会自动消失,所以需要定时刷新/再生
      刷新/再生:将原存信息读出,再由刷新放大器形成原信息并重新写入。刷新通常是一行一行地进行。有集中刷新,分散刷新,异步刷新三种方式。

      • 集中刷新:在2ms内划分出一段时间,用来给所有行刷新;该段时间内不能进行读写操作,所以被称为死区/死时间
      • 分散刷新:对每行存储单元的刷新分散到每个从存取周期。
        虽然不再存在死区,但是存储周期变长了---->整个系统的性能/速度变慢了。
      • 异步刷新:前两种方式的结合/折中,将2ms分为数个小时间段,每个时间段刷新一行。此方式较灵活,可以将每个小周期的刷新死区安排在指令译码阶段,此时CPU不访问存储器。
  • SRAM对比DRAM
    应用范围: DRAM应用比SRAM广泛。DRAM用于内存条/计算机主存或者内存,SRAM用于Cache。
    集成度:DRAM高,SRAM低。
    功耗:DRAM低,SRAM高。
    价格:DRAM低,SRAM高。
    速度:DRAM低,SRAM高。

只读存储器—ROM

  • 只读存储器原始定义:一旦注入原始信息即不能改变。随着用户需要,又产生了PROM,EPROM,EEPROM。
  • ROM的基本器件也分为MOS型和TTL型。
  • 掩膜ROM—MROM,重合法驱动,一旦写入原始数据,用户无法改变。
  • 如下图,MROM的行线和列线交叉处如果有耦合MOS管,有的话是1,没有的话是0。读放大器反向输出。
    ,-------

    ,--------
  • PROM-----可以一次性编程,由双极型电路和熔丝构成。
    熔丝断是0,熔丝没有断是1。如下图
    ,-------

    ,------
  • EPROM—可擦除可编程ROM,能实现多次编程,但是擦除麻烦。
    目前用的较多的是浮动栅注入型MOS管。
    在漏极D加正电压,会形成浮栅,阻止S和D的导通,是0态。
    当D极不加正电压时,无浮栅,MOS管正常导通,呈1态。
    当希望改变状态时,可以用紫外线照射,驱散浮栅。
    ,--------

    ,--------
  • EEPROM:EPROM利用紫外线照射擦写,擦写时间长。不能对个别需要改动的单元进行擦除、重写。而EEPROM用电气方法来擦写存储单元,可以进行字擦除、页擦除,又可以全部擦写。
  • 闪速存储器—FLASH MEMORY
    具备EEPROM的特点,非易失、电可擦除(至少可以擦写/编程一万次),擦写速度比EEPROM快很多。
    可以做计算机的硬盘—固态盘;U盘,SD卡;微型计算机中可以用来存放驱动和参数…

存储器与CPU的连接

  • 存储器的扩展
    • 位扩展:增加存储字长,即一个存储单元中有几个存储元件
      关键是要让几个存储芯片同时工作,它们的地址线,片选线,读写线都要接到一起共用,某个芯片的输出作为一次输出的某几位。如下图
      ,------

      ,------
    • 字扩展:就是增加存储字的容量/存储单元的个数,如两个 1K * 8 可以组成一个 2k * 8 的存储器。此时需要增加地址线。利用它们的片选端。
      ,------

      ,------
    • 字位扩展
      既增加存储字的数量,又增加存储字的字长。
      用于扩展字长的芯片要共用地址线、片选线、读写线,数据线按位数不同分列;
      用与字扩展的芯片数据线、读写线共用,已有的地址线共用,片选线要用做扩展高位地址。
      如下图8片 1K * 4 构成 4K * 8的存储系统。
      ,====

      ,====
  • 存储器与CPU的连接
    • CPU的地址线往往多于存储器的地址线,通常将CPU的低位地址线与存储器的地址线相连,而 CPU 的高位用来扩充存储容量。
    • CPU的数据线如果和存储器的数据线不等,必须对存储器进行位扩展。
    • CPU的访存控制信号:当此信号有效时,CPU访问存储器;否则CPU访问I/O。
    • ROM一般用来存放-系统程序,标准子程序和各类常数等。
      RAM一般用于用户编程而设置的。
    • 对于存储器芯片字位扩展设计硬件连线的题目,关键就是,用于组系统各个芯片都有的地址线统一连接,而每个芯片扩展的高位地址某一位恒为0/1则与片选端相连。扩展的高位中有0有1的可以通过译码器连到片选端等方法(一定要确保将不相干的芯片屏蔽)。不能有地址线没有连接到某一个芯片。未与芯片地址线连上的高位地址、访存控制信号线、其它门电路一起来产生片选有效信号

存储器的校验

  • 编码的检错能力与纠错能力
    • 000表示0,111表示1 -------- 检1位错,纠1位错
    • 0000表示0,1111表示1 -------- 检2位错,纠1位错
    • 00000表示0,11111表示1 -------- 检2位错,纠2位错
  • 编码最小距离:在一种编码系统中,任意两个合法代码之间的最少二进制位数的差异。
  • 纠错理论:编码最小距离 - 1 = 检错位数 + 纠错位数
  • 汉明码:具有一位纠错能力的编码
    n位二进制代码中添加k位检测位:应满足关系 :2 ^ k =n + k +1。一位错误的情况有n+k+1中情况(书99 - 102)

提高访存速度的措施

  • 主存的存取速度( 200ns )已经成为计算机系统的瓶颈

  • 措施有 单体多字系统,顺序多体,交叉多体

  • 单体多字系统
    在一个存取周期内取出四条指令,存储器带宽变成原来的四倍。
    但采用这种结构的前提是指令和数据在主存里面一定要连续存放;如果遇到转移指令,或者操作数不能连续存放,此法效果则不明显。
    ====

  • 多体并行系统
    由多体模块组成的存储器,每个模块有相同的容量和存取速度。各模块有独立的MAR,MDR,地址译码驱动电路,读写控制电路。可以并行、交叉工作。
    并行工作即同时访问N个模块,同时启动、读出,完全并行的工作。独处的数据在总线上分时传送。

    • 高位交叉编址多体存储器 / 顺序存储器
      高位地址表示体号,低位地址为体内地址。
      通过合理调动,可以使请求源同时访问不同的体。例如当一个体正与CPU交换信息,另一个体可同时与外部设备进行DMA访问。实现两个体的并行工作。
      如下图流水方式存取,低位交叉编址存储器。
      ,------

      ,-------

    • 低位交叉编址存储器 / 交叉存储器 / 模M编址
      此种情况下,程序连续存放在相邻的体中,所以又叫交叉存储
      用低位来表示体号,用高位来表示体内地址。
      可以在不改变每个个体存取周期的情况下,提高带宽
      如下图,又叫模M编址
      ,------
      计组:四、存储器_第2张图片
      ,------
      此时CPU交叉访问四个存储体,使四个存储体的读写过程重叠进行。除了第一个存取周期,其它存取周期都是存储器向CPU提供四个存储字。
      ,-----

      ,-----
      假设多体存储器的模块数为 n ,存取周期为 T ,总线传输周期为 t ,那么当采用上图流水线操作时,应满足 T = n * t 。模块数可以比这个 n 更大,但不能比这个 n 小(确保经过 n * t 时间后,上一次的存取操作已经完成)。

      以四体低位交叉编址为例,如下图
      ,-----

      ,-----
      对于低位交叉编址,连续存取 n 个字所需的时间为 T + ( n - 1 )* t 。好像每个存取周期最后一部分要用到总线,占用一个 t ,T 里面包含一个 t。
      对于高位交叉编址,连续读取 n 个字所需要的时间为 n* T 。

  • 高性能存储芯片---->SDRAM
    同步动态RAM,SDRAM与处理器的数据交换同步于系统的时钟信号,CPU 给出地址和控制信号可以被 SDRAM 锁存,并在指定的周期内去完成在这些操作,而CPU在这段时间里可以去做别的事情。
    而异步DRAM只能让CPU等待它处理信号,拉慢系统的速度。

  • 带 Cache 的 RAM ( CDRAM )
    Cache的内容对应 CDRAM 的一行,下一次存取时,会比较Cache的行号和目的行号,不一样则会更新 Cache 。
    Cache其实就是SRAM。

高速缓冲存储器

Cache就是SRAM

  • 为什么引入Cache

    • 多体并行存储系统中,当 I/O 设备向主存请求大的级别高于 CPU 的访存请求时,就会出现 CPU 等待 I/O 设备访存 的情况,使 CPU 空等,降低了 CPU 的工作效率。
      解决措施是 在 CPU 和主存之间加一级缓存,主存将 CPU 要取的信息提前送至缓存;当 I/O 与主存进行设备交换时,CPU 可从缓存中读取信息,而不用空等。
    • CPU 与主存 ( DRAM ,ROM ) 等的速度不匹配
      由于程序的局部性原理 ( 时间 和 空间 ),CPU在执行程序时,访存具有相对的局部性,所用到的指令和数据在存储中相对聚集。那么 CPU 可以直接与高速 Cache 交换信息,而不必访问主存,在一定时间内只访问Cache。以块为单位与Cache进行数据交换。
  • Cache工作原理
    将主存和 Cache 均分成大小相同的块,如下图,
    主存地址中:高 m 位为主存的块地址 / 块号,低 b 位为块内地址
    Cache地址中:高 c 位为Cache的块地址 / 块号,低 b 位为块内地址
    ,-----

    ,-----
    命中:CPU欲读取主存某字时,所需要的字已经在缓存中,即可直接访问 Cache 。此为命中。
    非命中:CPU欲读取主存某字时,所需要的字不在缓存中,此时会将该字所在的主存整个字块一次调入 Cache 中(块也是 Cache 与 主存数据交换的单位)。
    Cache 中一个块不可能永远只存储同一个主存块。所以 Cache 中每个缓存块需设一个标记,标记的内容相当于主存块号,用来表示当前存放的是哪一个主存块。

  • Cache的命中率:CPU要访问的信息已经在 Cache 中的比率。命中率与块长、Cache 的容量有关。

  • Cache 的块没有必要太大或者太小。

  • Cache 与主存,Cache 与 CPU 之间都是以块为单位交换信息。

    • 读操作:CPU 发出主存地址,首先判断是否在 Cache 中。
      若命中,则直接访问 Cache ,将该字送往 CPU。
      若未命中,一方面要访问主存,将该字传给 CPU,同时将主存块存入 Cache。如果 Cache 没有满,则直接装入;否则替换,装入。

    • 写操作:
      写直达法:既写入 Cache 又写入主存
      写回法:写时只把数据写入 Cache 而不写入主存,当 Cache 中这一块被替换时再写入主存。为此 Cache 中每一块要增设一位标志位来表示该块是否与主存块数据一致。

  • Cache的改进

    • 设置多级 Cache。

    • 统一缓存和分离缓存

      • 统一缓存:指令和数据都存放在同一缓存内的 Cache。
      • 分立缓存:指令和数据分别存放在两个缓存中,一个是指令 Cache,一个是数据 Cache。

    采用哪种方式一是和计算机的存储方案有关,而是和机器对指令的控制方式有关。

    • 如果计算机的存储方案是指令和数据统一存放,则是统一缓存
      若计算机的指令和数据是分开存放的,则是分立缓存

    • 超前控制:是指当前指令执行过程还没结束就提前将下一条准备执行的指令取出。又叫超前取指 / 指令预取。

    • 流水线控制:多条指令同时执行,可视为指令流水。那么就需要多个指令译码电路和功能部件

    • 超前控制 和 流水线控制都需要 指令的预取指令的并行执行。因此必须要将 指令Cache 和 数据Cache 分开。

Cache - 主存地址映射

  • 映射的方向:从 主存地址 映射到 Cache 地址,叫做地址映射

  • 地址映射的方式:直接映射(很固定),全相联映射(很灵活),组相联映射(上面二者的折中)。

    • 直接映射
      ,—

      ,—
      每个主存块只与特定的缓存块对应。
      每个缓存块对应若干个主存块。

      • 主存地址的 c 位是对应 Cache 的块地址,t 位则是主存块的区号 / 主存字块标记;当某一主存块被写入 Cache 时,该主存块的主存字块标记 就被记录在缓存块的 “标记位” 中。
      • 该方式的缺点:不够灵活,每一个主存块只能映射到 固定的缓存块 中;即使旁边空着很多位置也不能占用,缓存的存储空间得不到充分利用。
    • 全相联映射
      ,—

      ,—

      • 允许每一个主存块映射到 Cache 中的任何一块位置上。十分灵活,不会有冲突。
      • 缺点:主存字块标记要从 t 位增加到 t + c 位,使得 “Cache标记” 的位数增加。写入标记、判断标记的时间变长。所需要的逻辑电路也变多,硬件成本也上升了。
    • 组相联映射

      • 是直接映射和全相联映射的折中。

        ,----

      • 组相联映射把 Cache 分为 Q 组,每组有 R 个缓存块。
        缓存的组号 = 主存的块号 mod Q

      • 上图缓存每组包含两个块,所以又叫二路组相联。主存的某一字块按模16映射到 Cache 对应组中的任何一个字块。如第 0 块可以映射到 Cache 第 0 组的任一字块中

  • 主存地址段的划分
    ,—


,—

,—

  • Cache 的替换策略:先进先出算法FIFO,近期最少使用算法LRU,随机法。
    LRU 的命中率比 FIFO 高。LRU较好地利用了程序访问的局部性原理。

  • 平均访问时间 = 命中率 * 访问缓存的时间 + 未命中率 * 访问主存的时间

  • 缓存的效率 = 访问缓存的时间 / 平均访问时间。

  • 缓存-主存层次由硬件来管理
    主存-辅存层次由硬件和软件(OS)共同管理。
    通常 主存存取时间 是 缓存存取时间 的 5 ~ 10 倍;( 20 ns ,200ns)
    辅存的存取时间通常是主存的上千倍,一个 200 ns ,而辅存是 ms 级。
    所以 主存未命中时 系统的性能损失 远大于 缓存未命中时 的系统损失。
    CPU ----> Cache ----> 主存 ----> 辅存
    10ns ----> 20ns ---->200ns----> ms级

辅存

  • 磁盘的平均寻址时间 = 平均寻道时间 + 平均等待时间
    平均寻道时间:直接存取,所花的时间与存储位置有关,定位目标
    磁道的时间。
    平均等待时间:按顺序存取/串行存取,再找到目的磁道后,定位目的字块的平均时间。一般取转半周所花的时间。

  • 磁表面存储器的记录二进制数据的方式总体上可以分为 归零制不归零制 两大类。
    归零制:位与位之间必有0电流。
    不归零制:位与位之间始终有电流/非零电流。

  • 磁盘的地址一般包括三部分:磁头号/盘面号,磁道号,扇段号/记录块号。

  • 磁盘的道密度:沿半径方向单位长度上的磁道数量。

  • 磁盘的位密度一条磁道上单位长度上记录二进制代码的位数。

  • 一个完整的磁盘由三部分组成:磁盘控制器(磁盘与主机的接口);磁盘驱动器(独立于主机);盘片(用于保存信息)。
    ,—

    ,—

  • 磁盘与主机交换信息一般采用DMA方式。

习题补充

  • 每访问一次虚地址,
    若 VA 对应的 PA 已经在主存中,那就访问一次主存就可以;
    若 VA 对应的 PA 不在主存中,要先将 VA 对应的地址内容调入主存,然后 CPU 访问 PA。
    访问主存未命中对系统的影响很大,严重拖慢。

  • 动态RAM 的刷新以行为单位来进行的,行地址 由行地址计数器给出。

  • 半导体SRAM的读写操作,一般是先接受 地址信号,然后片选信号,最后是读/写信号

  • 地址映射:将主存的地址映射到缓存的地址。又或者是把VA转化成PA。
    地址变换:将贮存地址变为缓存的地址。

  • 缓存的命中率与 块长、缓存的容量 有关。

  • FLASH 具有瞬时启动的能力。EPROM的擦除过程十分缓慢。

  • 只有 RAM 能进行单字节读写,只有半导体存储器能进行快速读出操作。

  • 控存:微程序控制器中用来存放微指令的存储器。通常是ROM。

  • 虚存是由 主存-辅存 这一层次构成。PA 与 CPU 的地址线相对应。

  • RAM 在程序的执行过程中能够读写信息,而 ROM 不能。

  • 地址总线的位数决定了主存的最大容量。

  • 可编程逻辑阵列PLA是一种特殊的只读存储器。

  • 直接映射命中率低,不灵活;
    全相联映射:所需的逻辑电路复杂,成本高,命中率高。
    组相联映射:比直接映射灵活,命中率高,比全相联映射成本低。是一和二的折中。

  • 相联存储器:相当于全相联映射,可以按地址也可以按内容查找。每次查找是将所有存储字的相关字段与检索项同时进行比较。大大提高了处理速度(按内容访问寻找某一个单元只需要一次操作,而按地址需要 size / 2 次操作)。相联存储器不仅要能进行存取,还要能进行逻辑运算,需要增加大量逻辑运算电路。

你可能感兴趣的:(计算机组成原理)