计算机组成原理---第三章存储系统

一、存储器概述

  1. 存储器

(1)定义:存储器是计算机系统中的记忆设备,用来存放程序和数据。

(2)构成:存储器的存储介质主要采用半导体器件和磁性材料。存储器的最小存储单元为存储位元,用来存储一位二进制代码,若干个存储位元组成一个存储单元,然后再由许多存储单元组成一个存储器。

  2.存储器分类

①按存储介质分类:半导体存储器;磁表面存储器。

②按存取方式分类:随机存储器(半导体存储器);顺序存储器(磁带存储器);半顺序存储器(磁盘存储器)。

③按存取内容分类:只读存储器(ROM);随机读写存储器(RAM)。

④按断电后的信息状态分类:易失性存储器(磁性介质);非易失性存储器(半导体介质)。

⑤按信息存储的机理分类:静态读写存储器(SRAM);动态读写存储器(DRAM)。

⑥按在计算机系统中所起的作用分类:分为内部存储器、外部存储器;又可分为主存储器、高速缓冲存储器、辅助存储器、控制存储器。

3.存储器的分级

在计算机系统中,通常采用多级存储器体系结构,如图所示。

 

注意:其中上两层为内存储器,容量相对较小,可以被 CPU 直接访问,存取速度快;而下两层为外存储器,容量大,但不能被 CPU 直接访问,需要先调入内部存储器才能被 CPU 处理。

4.存储体系的层次化结构

 

5.主存储器的技术指标

    (1)相关定义

①存放一个机器字的存储单元,通常称为字存储单元,相应的单元地址称为字地址;

②存放一个字节的单元,称为字节存储单元,相应的地址称为字节地址;

③按可编址的最小单位将计算机分为按字寻址的计算机和按字节寻址的计算机。

(2)性能指标

①存储容量:指一个存储器中可以容纳的存储单元总数。存储容量常用字数或字节数(B)来表示。

②存取时间:指一次读操作命令从发出到完成,将数据读出到数据总线上所经历的时间。

③存储周期:指连续启动两次读操作所需最小时间间隔。

④存储器带宽:单位时间里存储器所存取的信息量,通常以位/秒或字节/秒做度量单位。

二、SRAM 存储器

       根据信息存储的机理不同,存储器又分为静态读写存储器(SRAM)和动态读写存储器(DRAM)。SRAM的优点是存取速度快,但存储容量不如 DRAM 大。

  1. 基本的静态存储元阵列

基本的静态存储元阵列如图 3-2 所示

      SRAM 的特征是用一个锁存器(触发器)作为存储元。只要直流供电电源一直加在这个记忆电路上,它就无限期地保持记忆的 1 状态或 0 状态。如果电源断电,那么存储的数据(1 或 0)就会丢失。

     任何一个 SRAM,都有三组信号线与外部通信:

①地址线:阵列中有 6 条,即 A0、A1、A2、A3、A4、A5,它指定了存储器的容量是 26=64 个存储单元。

②数据线:本例中有 4 条,即 I/O0,I/O1,I/O2,I/O3,它指定了存储器的字长是 4 位,因此存储位元的总数是 64×4=256。

③控制线:R/W线控制线,它指定了对存储器进行读(R/W高电平),还是进行写(R/W低电平),读写操作不会同时发生。

地址译码器输出有 64 条选择线,称为行线,它的作用是打开每个存储位元的输入与非门。当外部输入数据为 1 时,锁存器便记忆了 1;当外部输入数据为 0 时,锁存器便记忆了 0。

SRAM存储单元工作原理: 

 

2.基本的 SRAM 逻辑结构

目前的 SRAM 芯片采用双译码方式,以便组织更大的存储容量。

   (1)逻辑结构

存储容量为 32K×8 位的 SRAM 逻辑结构图如图 3-3 所示

 (2)

  1. 工作原理

        地址线共 15 条,其中 x 方向 8 条(A0~A7),经行译码输出 256 行;y 方向 7 条(A8~A14),经列译码输出128 列;双向数据线有 8 条,即 I/O0~I/O7,存储阵列为三维结构,即 256 行×128 列×8 位。

       向 SRAM 写入时,8 个输入缓冲器被打开,而 8 个输出缓冲器被关闭,因而 8 条 I/O 数据线上的数据写入到存储阵列中去。从 SRAM 读出时,8 个输出缓冲器被打开,8 个输入缓冲器被关闭,读出的数据送到 8 条I/O 数据线上。

   在芯片中, (CS)'来控制 (OE)’和 (WE)' 的片选信号,(OE) ’有效时(低电平), (WE)'无效时(高电平),存储器进行读操作; (OE)’无效时(高电平), (WE)'有效时(低电平),存储器进行写操作。 (OE)’和 (WE)'互锁,保证了读时不写,写时不读。

 (3)/写周期波形图

读周期波形如图 3-4 所示。

 写周期波形如图 3-5 所示。

 

(4)静态存储器的结构 

三、DRAM 存储器

  1. DRAM 存储元的记忆原理

动态 MOS 随机读写存储器 DRAM 的存储容量极大,通常用作计算机的主存储器。DRAM 存储器的存储元是由一个 MOS 晶体管和电容器组成的记忆电路。

           ① 写 1 到存储元 

此时输出缓冲器关闭、刷新缓冲器关闭,输入缓冲器打开(R/W为低),输入数据 DIN=1 送到存储元位线上,而行选线为高,打开 MOS 管,于是位线上的高电平给电容器充电,表示存储了 1,如图 3-6 所示。

 ② 从存储元读出 1

       输入缓冲器和刷新缓冲器关闭,输出缓冲器/读放打开(R/W为高)。行选线为高,打开 MOS 管,电容上所存储的 1 送到位线上,通过输出缓冲器/读出放大器发送到 DOUT,即 DOUT=1,如图 3-8 所示。

③ 刷新存储元的 1

先如图 3-8 读出数据 DOUT=1 后又经刷新缓冲器送到位线上,再经 MOS 管写到电容上,

如图 3-9 所示。

 2.DRAM 芯片的逻辑结构

      (1)管脚图

      1M×4 位 DRAM 芯片有两个电源脚、两个地线脚,为了对称,还有一个空脚(NC),它的管脚图如图 3-10所示。

  

 (2)逻辑结构图

1M×4 位 DRAM 逻辑结构图如图 3-11 所示。

与 SRAM 不同的是:

①增加了行地址锁存器和列地址锁存器。由于 DRAM 存储器容量很大,地址线宽度相应要增加,这势必增加芯片地址线的管脚数目。

②增加了刷新计数器和相应的控制电路,刷新操作与读/写操作是交替进行的,所以通过 2 选 1 多路开关来提供刷新行地址或正常读/写的行地址。

3./写周期、刷新周期

(1)DRAM 的读写周期

DRAM 的读写周期波形图如图 3-12 所示。

 (2)DRAM 的刷新周期

 DRAM 有三种刷新方式,分别为: 

①集中式刷新

刷新方式为前面的时间一直进行读取操作,后面的时间进行刷新。设刷新 64×64 的矩阵,刷新一次的时间为 0.5us,则刷新完 64 行需要的时间为 64×0.5=32us,说明这 32us 里不能进行读写操作。

②分散式刷新

它扩大了读写周期,若读一次需要时间为 0.5us,则一次的读写周期为 1us,因为它包含了刷新用的 0.5us。

③异步式刷新

它将每一行的刷新都分开来,只要在规定的时间完成对每一行的刷新即可,(2ms/64)间隔进行一次刷新,这里的 2ms 是规定的,因为 DRAM 要求,至少 2ms 更新所有行一次。

4.高级的 DRAM 结构

Ⅰ  SDRAM(同步 DRAM) 

  在系统时钟的控制下进行读出和写入,CPU 无需等待,主要解决速度匹配问题。

Ⅱ   RDRAM

由 Rambus 开发,主要解决存储器带宽问题。

Ⅲ  带 cache 的 DRAM

在 DRAM 的芯片内集成了一个由 SRAM 组成的 cache,有利于猝发式读取。

  5.存储器容量的扩充

   (1)字长位数扩展:给定的芯片字长位数较短,不满足设计要求的存储器字长,此时需要用多个给定芯片扩展字长位数。三组信号线中,地址线和控制线公用而数据线单独分开连接。所需芯片数计算公式为

 (2)字存储容量扩展:给定的芯片存储容量较小(字数少),不满足设计要求的总存储容量,此时需要用多片给定芯片来扩展字数。

(3)

(4)举例:

6.DRAM /写的正确性校验

      DRAM 正确性校验的概念示意图如图 3-13 所示。其中 F 部分为检验电路,通常有奇偶校验和汉明码校验。

7. DRAM与SRAM的区别

四、只读存储器和闪速存储器

   SRAM 和 DRAM 都是随机读写存储器,它们的特点是数据可读可写。

  1. 只读存储器 ROM

与随机读/写的 RAM 不同,ROM 称作只读存储器。ROM 分掩模 ROM 和可编程 ROM 两类,后者又分为一次性编程的 PROM 和多次编程的 EPROM 和 E2PROM。

       ①  掩模 ROM

❶ 掩模 ROM 的阵列结构和存储元

掩模 ROM 实际上是一个存储内容固定的 ROM,一旦 ROM 芯片做成,就不能改变其中的存储内容。一个

16×8 位的 ROM 阵列结构示意图如图 3-14 所示。

❷ 掩模 ROM 的逻辑符号和内部逻辑框图

掩模 ROM 的逻辑符号如图 3-15(a)所示,内部逻辑框图如图 3-15(b)所示。

    ②可编程 ROM

     可编程 ROM 有 PROM、EPROM 和 E2PROM 三种。PROM 是一次性编程,后两种可多次编程。

❶   EPROM 存储元

EPROM 称作光擦除可编程可读存储器,是一种断电后仍能保留数据的计算机存储芯片,即非易失性的。它是一组浮栅晶体管,被一个提供比电子电路中常用电压更高的电子器件分别编程,一旦编程完成,EPROM 需要用强紫外线照射来擦除。

❷  E2PROM 存储元

E2PROM 是指带电可擦可编程只读存储器,同样具有非易失性,与 EPROM 不同的是,E2PROM 不需要从计算机中取出即可修改,其可通过高于普通电压的作用来擦除和重编程。

 2.FLASH 存储器(闪速存储器)

 ❶概述:它是高密度非易失性的读/写存储器。高密度意味着它具有巨大比特数目的存储容量,非易失性意味着存放的数据在没有电源的情况下可长期保存。总之,它既有RAM优点,又有ROM优点。

❷FLASH 存储器的基本操作:①编程操作②读取操作③擦除操作

❸各种存储器的性能比较

FLASH 与各种存储器性能的比较如表 3-1 所示。

存储器类型

非易失性

高密度

单晶体管存储元

在系统中的可写性

FLSAH

SRAM

×

×

×

DRAM

×

×

ROM

×

EPROM

×

EEPROM

                             表 3-1 各种存储器的性能比较

五、并行存储器

采用并行技术的存储器,可以提高 CPU 和主存直接的数据传输率。

  1. 双端口存储器

     ❶双端口存储器的逻辑结构

双端口存储器的同一个存储器具有两组相互独立的读写控制电路。采用空间并行技术,可以进行并行的独立操作,是一种高速工作的存储器。

双端口存储器 IDT7133 的逻辑框图 

❷ 无冲突读写控制

 ❸ 有冲突的读写控制

      2.多模块交叉存储器

         (1)存储器的模块化组织

一个由若干个模块组成的主存储器是线性编址的,多体交叉存储器采用时间并行技术。

①顺序方式:在常规主存储器设计中,访问地址采用顺序方式,如图 3-17 所示,其单个模块损坏不影响其他模块,扩容方便,但带宽受到限制。

        ②交叉方式

采用交叉方式寻址的存储器模块化组织如图 3-18 所示,其大大提高了存储器的带宽。

六、cache 存储器

  1. cache 基本原理

      (1)cache 的功能

cache 是一种高速缓冲存储器,是为了解决 CPU 和主存之间速度不匹配而采用的一项重要技术。其原理基于程序运行中具有的空间局部性和时间局部性特征。

cache 是由高速的 SRAM 组成,由于其存取速度比主存快,因此可以加快程序的执行速度。

                              CPU 与存储器系统的关系 

     (2)cache 的基本原理

  如图 3-20 所示,当 CPU 执行访存指令时,就把所要访问的字的地址送到 CAM;若此字在 cache 中,则将此字立即传送给 CPU;若不在,则将此字从主存传送到 CPU。与此同时,把包含此字的由前后相继的 4 个字所组成的一行数据送入 cache,它替换了原来 cache 中最近最少使用(LRU)的一行数据。

(3)cache 的命中率

2.主存与 cache 的地址映射

        高速缓存 Cache 相当于主存的一个子集,那就必须要先明确子集与原集合之间的映射关系,高速缓存与主存之间的映射关系主要分为三种:

全相联映射:1)映射方式,主存和缓存之间的数据传递是以块为单位的,每个块包含多个字的数据,全相联映射中,如下图所示:Cache 中#0~#7 行均可以接收主存#0 块,即主存中块可以存放在 Cache 中的任意位置,没有限制;2)访存方式,如下图所示,假设内存容量为 16*4B,主存的地址包括 4 位块号以及 2 位块内地址,CPU 带着待取数据的主存地址(如 001110)去问 Cache 要数据,Cache 于是对着主存地址去挨个块核对标记有效位,发现#2 行标记和主存块号一致,且标记位为 1(说明块内有数据),则通知 CPU“我有你想要的东西”,即为命中

直接映射:1)映射方式,主存中块只能按照一定的次序排队放入放到 Cache 中的某一行,因此,Cache 块号 = 主存块号 %(取余)Cache 总块数;2)访存方式,CPU 带着地址码 001110 去找 Cache 要数据,Cache 用主存块号对行数 8 取余结果为#3,于是就去#3 行核对标记和有效位,发现有效位虽然为 1,但标记却是 1011,与主存块号不一致,于是通知 CPU“我没有你想要的东西”,即为不命中;

组相联映射,1)映射方式,介于 1)和 2)映射方式之间,Cache 中的块可以事先分组,主存中的块必须要按照一定次序放入 Cache 中的某一组,但是在组内可以随意放;2)访存方式,CPU 带着地址码 001110 去找 Cache 要数据,Cache 用主存块号对组数 4 取余结果为#3 组(即块号后两位),于是就去#3 组(#6 行,#7 行)核对标记和有效位,发现#7 行标记为 0011 一致,且有效位为 1,于是通知 CPU“我有你想要的东西”,即为命中;

    (1)全相联映射方式

①组成:cache 的数据块大小称为行,用 Li 表示,主存的数据块大小称为块,用 Bj 表示。行与块是等长的,每个块(行) 由 k=2w 个连续的字组成,字是 CPU 每次访问存储器时可存取的最小单位。

      ②映射过程:在全相联映射中,将主存中一个块的地址(块号)与块的内容(字)一起存于                cache 的行中,其中块地址存于 cache 行的标记部分中。这种带全部块地址一起保存的方               法,可使主存的一个块直接拷贝到cache 中的任意一行上。如图所示。

       

③检索过程

           CPU 访存指令指定了一个内存地址,指令中的块号先与 cache 中所有行的标记同时进行比            较,如果块号命中,则按字地址从 cache 中读取一个字;如果块号未命中,则按内存地从              主存中读取这个字。在全相联 cache 中,全部标记用一个相联存储器来实现,全部数据用             一个普通 RAM 来实现。

④缺点全相联方式的主要缺点是比较器电路难于设计和实现,因此只适合于小容量 cache 采用。

    (2)直接映射方式

①定义:直接映射方式也是一种多对一的映射关系,但一个主存块只能拷贝到 cache 的一个特定行位置上去。

②原理:cache 的行号 i 和主存的块号 j 有如下函数关系:i=j mod m式中,m 为 cache 中的总行数。

直接映射方式的示意图如图所示。其中主存数目为 2ⁿ(n=s)=2ⁿ(n=8)=256,cache行数目为 2r=2³=8。

③检索过程:在直接映射方式中,cache 将s 位(块地址用s 位表示)的块地址分成两部分:r 位(行号用r 位表示)作为cache 的行地址,s-r 位作为标记(tag)与块数据一起保存在该行。CPU 进行检索时根据行地址和标记来确定要读取的字在 cache 中还是在主存中。

④优缺点:硬件简单,成本低,但在 cache 中容易发生冲突,较适合于需要大容量 cache 的场合。

      (3)组相联映射方式

①概述:组相联映射方式既兼顾全相联映射的灵活性及高命中率,也兼顾直接映射的简单及低成本优点。

②原理:这种方式将 cache 分成 u 组,每组v 行。主存块存放到哪个组是固定的,至于存到该组的位置是灵活的,即有如下函数关系:m=u×v  组号 q=j mod u

组相联映射的示意图如图所示。其中 cache 组数为 2ⁿ(n=d)=4,标记大小为s-d 位。

③检索过程:在组相联映射方式中,当CPU给定一个内存地址访问cache时,首先用块号域的低 d 位找到cache的相应组,然后将块号域的高s-d位与该组v行中的所有标记同时进行比较,以此来确定要读取的字在cache中还是在主存中。

 3.替换策略

    (1)最不经常使用(LFU)算法

LFU 算法认为应将一段时间内被访问次数最少的那行数据换出,其缺点是不能严格反映近期访问情况。

      (2)近期最少使用(LRU)算法

LRU 算法将近期内长久未被访问过的行换出。这种算法保护了刚拷贝到 cache 中的新数据行,因而使 cache有较高的命中率。

      (3)随机替换

随机替换策略只要从特定的行位置中随机地选取一行换出即可,但其容易降低命中率和 cache 工作效率。

高速缓存的替换策略

前面,介绍了高速缓存与主存的映射方式以及不同映射方式下,CPU 的访存方式,访存结果根据 CPU 是否获得“想要的数据”而分为命中和不命中两种情况,命中就皆大欢喜,这里介绍一下不命中会怎么样。不命中也分两种情况:

有空位置存放数据,直此时接将内存块地址对应数据 Copy 至此即可;

没有空位置存放数据(即待放入位置被原数据块占据了),此时就需要对两个块进行位置替换,确保计算机的正常运行,三种不同的映射方式的替换前提有所不同,区别如下:1) 全相联不挑食,除非 Cache 全满,否则就可以见缝插针;2)直接映射最专一,必须对应行非空,否则就替换;2)组相联比较中庸,介于二者之间,对应的组满了,才替换。

4.cache 的写操作策略

     (1)写回法

①要求:当CPU写cache命中时,只修改cache的内容,而不立即写入主存;只有当此行被换出时才写回主存;当CPU写cache未命中时,将包含此字的主存块拷贝到cache中再进行修改。

②特点:明显减少写入主存的次数,真正实现CPU与主存之间高速缓冲作用,但这种方式会存在不一致性隐患。

      (2)全写法

①要求:当写cache命中时,cache与主存同时发生写修改,因而较好维护cache与主存内容的一致性;

当写cache 未命中时,只能直接向主存进行写入。但此时是否将修改过的主存块取到cache,有两种选择方法:

(i)WTWA法:取主存块到cache并为它分配一个行位置。

(ii)WTNWA法:不取主存块到 cache。

②特点:保证了写cache与写主存的同步进行,但cache对CPU向主存的写操作无高速缓冲功能。

(3)写一次法:基于写回法并结合全写法的写策略:写命中与写未命中的处理方法与写回法基本相同,只是第一次写命中时要同时写入主存。

七、虚拟存储器

  1. 虚拟存储器的基本概念

(1) 实地址与虚地址

①虚地址:用户编制程序时使用的地址称虚地址或逻辑地址,其对应的存储空间称虚存空间或逻辑地址空间。

②实地址:计算机物理内存的访问地址称实地址或物理地址,其对应的存储空间称物理存储空间或主存空间。③程序的再定位:程序进行虚地址到实地址转换的过程称为程序的再定位。

(2)虚存的访问过程

①访问过程:每次访问虚存时,判断该虚地址所对应部分是否在实存中;若在,则进行地址转换并用实地址访问主存;若不在,则按照某种算法将辅存中的部分程序调度进内存,再按同样的方法访问主存。

②虚地址空间与实地址空间比较

每个程序的虚地址空间既可以远大于也可以远小于实地址空间,不同在于:远大于实地址空间可以提高存储容量;远小于实地址空间可以缩短指令中地址字段的长度。

③虚存的优点:虚拟的存储器使得每个程序具有辅存的容量和接近主存的访问速度;

(3)cache 与虚存的异同

同:①出发点相同②原理相同

异:③侧重点不同④数据通路不同⑤透明性不同⑥未命中时的损失不同

(4)虚存机制要解决的关键问题:①调度问题②地址映射问题③替换问题④更新问题

2.页式虚拟存储器

        (1)页式虚存地址映射

①概述:页式虚拟存储系统中,虚地址空间被分成等长大小的页,称为逻辑页;主存空间也被分成同样大小的页,称为物理页。虚地址分为两个字段:高字段为逻辑页号,低字段为页内地址(偏移量);实存地址也分两个字段:高字段为物理页号,低字段为页内地址。通过页表可以把虚地址(逻辑地址)转换成物理地址。

②页表的作用:每一个进程都有一个页表,用来存放物理页和逻辑页的对应关系,页式虚拟存储器的地址映射过程如图所示。

 

(2) 转换后援缓冲器(TLB)

①概述:专用于页表缓存的高速存储部件通常称为转换后援缓冲器(TLB),又称为快表。而保存在主存中的完整页表则称为慢表。快表的作用是加快地址变换。

②TLB的作用

TLB 的地址映射过程如图 所示。

(3)内页表和外页表

①用于虚地址与主存物理地址之间的变换表称为内页表。

②用于虚地址与辅存地址之间的变换表称为外页表。

     3.段式虚拟存储器和段页式虚拟存储器

       (1)段式虚拟存储器

段是按照程序自然分界划分的长度可以动态改变的区域。通常,程序员把子程序、操作数和常数等不同类型的数据划分到不同的段中,并且每个程序可以有多个相同类型的段。

①段表:每个程序设置一个段表,段表的每一个表项对应一个段。每个表项至少包含下面三个字段:

(i)有效位,指明该段是否已经调入实存;(ii)段起址,指明在该段已经调入实存的情况下,该段在实存中的首地址;(iii)段长,记录该段的实际长度。

②段式虚存的地址存储过程:段式虚地址向实存地址的变换过程如图 3-26 所示。

③段式虚存的优点

  1. 易于编译、管理、修改和保护,也便于多道程序共享;
  2. 段长可以根据需要动态改变,允许自由调度,以便有效利用主存空间。

④段式虚存的缺点

  1. 主存空间分配比较繁琐;
  2. 容易在段间留下许多碎片,造成存储空间利用率降低;
  3. 需要额外用加法操作来求物理地址。

   (2)段页式虚拟存储器

在段页式虚拟存储系统中,每道程序均通过一个段表和多个页表进行两级再定位。由于在多任务系统中,操作系统会在每个虚地址前加上一个表明该程序在系统中的序号的基号,因此一个虚地址可以看作由四个字段构成,如图表所示。

(基号 N)

段号 S

段内逻辑页号P

页内地址偏移量 D

图 3-27 构成虚地址的四个字段

段页式虚拟存储器的缺点是在由虚地址向主存地址的映射过程中需要多次查表,因而实现复杂度较高。

4.虚存的替换算法

当从辅存调页至主存而主存已满时,也需要进行主存页面的替换。虚拟存储器的替换算法与 cache 的替换算法类似,有 FIFO 算法、LRU 算法、LFU 算法等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尘 关

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值