资讯详情

【408笔记】计算机组成原理 第三章 存储系统

文章目录

  • 3.1 存储器概述
    • 3.1.1 存储器分类
      • 根据计算机中的功能(层次)进行分类
      • 按存储介质分类
      • 按存取方式分类
      • 根据信息的可保存性进行分类
    • 3.1.2 存储性能指标
    • 3.1.3 多级存储系统
  • 3.2 主存储器
    • 3.2.1 SRAM芯片和DRAM芯片
      • SRAM的工作原理
      • DRAM的工作原理
      • DRAM刷新
      • DRAM读写周期(待补
      • SRAM和DRAM的比较
      • 存储芯片的内部结构(需要补充)
    • 3.2.2 只读存储器ROM
      • ROM的特点
      • ROM的类型
      • 重要ROM
    • 3.2.3 主存储器的基本组成
    • 3.2.4 多模块存储器
      • 多体并行存储器
        • 单体多字存储器
      • 多体并行存储器
  • 3.3 主存与CPU连接
    • 3.3.1 连接原理
    • 3.3.2 扩展主存容量
      • 位扩展法
      • 字扩展法
        • 线选法
        • 译码片选法
      • 同时扩展字位法
    • 存储芯片的地址分配和片选
  • 3.4 外部存储器
    • 3.4.1 磁盘存储器
      • 1.磁盘存储器
        • 磁盘设备的组成
          • 存储区域
        • 磁记录原理
        • 磁盘性能指标
          • 磁盘地址
        • 硬盘的工作过程
      • 2.磁盘阵列
    • 3.4.2 固态硬盘SSD
    • 补充 光盘
  • 3.5 高速缓冲存储器Cache
    • 3.5.1 程序访问的局部原理
    • 3.5.2 Cache基本工作原理
    • 3.5.3 Cache以及主存的映射方式
      • 直接映射
      • 全相联映射
      • 组相联映射
    • 3.5.4 Cache替换中主存块的算法
      • LRU算法实现
      • 最不常用算法的实现
    • 3.5.5 Cache写策略
      • 写命:全写、回写
        • 全写法
        • 回写法
      • 写未命中:写分配法,非写分配法
        • 写分配法
        • 非写分配法
    • 3.5.- 分离的Cache结构
    • 3.5.- 多级Cache结构
  • 3.6 虚拟存储器
    • 3.6.1 虚拟存储器的基本概念
    • 3.6.2 页面虚拟存储器
      • 1. 页表
      • 2. 快表(TLB)(TODO
    • 3.6.3 段式虚拟存储器
    • 3.6.4 段页存储器

3.1 存储器概述

在这里插入图片描述

3.1.1 存储器分类

按照在计算机中的作用(层次)分类

  1. 主存储器。简称主存储器和内存。。CPU可直接随机访问,也可与高速缓冲存储器一起使用(Cache)辅助存储器交换数据。
  2. 辅助存储器。辅助存储,外部存储。存储暂时不使用的程序和数据,以及需要永久保存的信息。
  3. 高速缓冲存储器。,位于主存和CPU之间,存储当前CPU经常使用的指令和数据CPU快速访问。现代计算机通常集成在一起CPU中

按存储介质分类

可分为:(磁盘,磁带),磁芯存储器、(MOS、双极型)、(光盘)

按照存取方式分类

  1. 随机存储器(RAM):存储器的任何单元都可以随机访问。。又分
  2. 只读存储器(ROM):只能随机读出而不能写入,即使断电,也不会丢失信息
  3. 串行访问存储器:按物理地址阅读和写作,包括存储器的顺序访问(SAM)(例如)并直接访问存储器(DAM)(例如))
  1. 磁盘属于 直接访问存储器(DAM)
  2. 根据相关存储器 内容指定与地址指定相结合 寻址的存储器
  3. CD-ROM,即光盘不属于只读存储器ROM

根据信息的可保存性进行分类

  1. 易失性存储器:断电后丢失存储信息,如RAM

  2. 非易失性存储器:断电后不会失去存储信息,例如ROM、磁表面存储器、光盘

  3. 破坏性读出:读取信息时,必须丢失原始信息

  4. 非破坏性读出:读出信息时原始信息不丢失

3.1.2 存储性能指标

  1. 存储容量 = 存储字长*字数(例如1M*8位)。存储字数表示存储器的地址空间大小,字长表示一次存取操作的数据量
  2. 单位成本
  3. 存储速度:数据传输率()=数据宽度/存储周期。。对于破坏性读出的存储器,存取周期往往比存取时间大的多,可以达到2倍

3.1.3 多级层次的存储系统

CPU-寄存器-Cache-主存-磁盘-磁带、光盘。从左向右,速度越来越慢,容量越来越大,价格越来越低。

存储系统层次结构主要体现在)和

主要思想:上一层存储器作为低一层存储器的高速缓存。

从CPU角度看,Cache-主存层速度接近Cache,容量和价格却接近主存;从主存-辅存层分析,其速度接近主存,价格和容量却接近辅存。这就解决了速度、容量和成本之间的矛盾

主存和Cache之间的数据调用是硬件自动完成的,对所有程序员都是透明的。主存和辅存的数据调用由硬件和操作系统完成,对于应用程序员是透明的

虚拟存储系统:编程的地址范围与虚拟存储器的地址空间相对应

3.2 主存储器

,断电丢失信息。

ROM属于非易失性存储器

3.2.1 SRAM芯片和DRAM芯片

存储元:存放一个二进制位的物理器件。是存储器最基本的构建

存储单元:地址码相同的多个存储元组成一个存储单元。若干存储单元的集合构成存储体

SRAM的工作原理

采用触发器来存储信息,属于是

,集成度低,功耗大,价格高,

DRAM的工作原理

采用来存储信息,属于是

DRAM刷新

DRAM电容上的电荷一般只能维持1-2ms,即使不断电也会丢失信息,为此必须隔一段时间,通常取

常见的刷新方式有以下三种

  1. 集中刷新:利用一段固定的时间,依次对存储器的所有行进行逐一。此时停止对存储器的读写操作,称为,又称访存
  2. 分散刷新:对每行的刷新分散到各个工作周期中。一个存储器的系统工作周期分为两部分,前一半用来正常读写,后一半用来刷新。
  3. 异步刷新:利用最大刷新间隔为2ms的特性。

DRAM的刷新需要注意:

  1. 刷新对于CPU是透明的,不依赖外部访问
  2. ,芯片内部自己生成行地址
  3. 刷新类似读操作,占一个读写周期,但有所不同。刷新不需要选片,即存储器中所有芯片同时被刷新
  1. DRAM采用分散刷新时,不存在死区时间

DRAM的读写周期(待补

SRAM和DRAM的比较

核心在于存储介质的不同

SRAM DRAM
存储信息 触发器 电容
读出是否破坏 非破坏性读出 破坏性读出
是否需要刷新 不需要刷新 需要刷新
送行列地址 同时送 分两次(地址线复用)
运行速度
集成度
存储成本
主要用途 Cache 主存

补充

  1. SDRAM表示同步动态随机存储器,属于DRAM

存储器芯片的内部结构(待补充

3.2.2 只读存储器ROM

ROM的特点

都支持随机存取,而RAM易丢失存储信息,ROM一旦有信息,就难以改变,掉电也不会丢失。

  1. 结构简单,位密度比RAM的高
  2. 具有非易失性,可靠性高

ROM的类型

根据制造工艺的不同,ROM可以分为:掩模式只读存储器(MROM)、一次可编程只读存储器(PROM)、可擦除可编程存储器(EPROM)、Flash存储器以及固态硬盘(SSD)

  1. 掩模式只读存储器(MROM):生产时写入,之后无法更改
  2. 一次可编程只读存储器(PROM):允许用户一次写入,之后就无法再修改
  3. EPROM:可紫外线擦除(UVEPROM),电擦除( E 2 E^2 E2PROM)
  4. Flash:U盘、SD卡。断电后可保存信息,可多次重写。
  5. SSD:固态硬盘

重要ROM

主板上的BIOS芯片(ROM)存储“自举装入程序”,负责引导装入操作系统(开机)

3.2.3 主存储器的基本组成

考点:

  1. 芯片的大小描述,引脚数(注意读写控制线是否集成一条
  2. 某一DRAM芯片,采用地址复用技术,容量为1024*8位,除了电源和接地线,该芯片引脚数最少为(读写为2条):1(片选)+1(行/列选择)+10/2(地址线)+8(数据线)+2(读写控制线)=17
  3. (14统考)某容量256MB的存储器由若干4M*8位的DRAM芯片组成,该DRAM芯片的地址引脚数为:22/2=11位(注意DRAM地址复用)、数据引脚数为:8位

3.2.4 多模块存储器

多体并行存储器

单体多字存储器

  1. 存储器中只有一个存储体,每个存储单元存储m个字,总线宽度也为m个字,一次并行读出m个字,地址必须顺序排列处于同一个单元
  2. 缺点是:指令和数据在主存内必须顺序存放,遇到转移指令或者操作数不能连续存放,效果就不理想

多体并行存储器

多体并行存储器由多体模块组成,每个模块都有相同的容量和存取速度,各个模块都有独立的读写控制电路、地址寄存器和数据寄存器。 多体并行存储器分为两种

  1. 高位交叉编址:高位地址表示体号,低位地址表示体内地址。这种方式无法提高存储器吞吐率,属于是顺序存储器
  2. 低位交叉编址:假设 T T T为存取一个字的存取周期,总线传送周期为 r r r,则交叉模块数量应该大于等于 m = T / r m=T/r m=T/r,才能实现流水。连续存取 m m m个字所需的时间是 t 1 = T + ( m − 1 ) r t_1=T+(m-1)r t1​=T+(m−1)r

3.3 主存与CPU连接

3.3.1 连接原理

  1. 主存储器通过和CPU连接
  2. 数据总线位数与工作频率乘积正比于数据传输率
  3. 地址总线位数决定了可寻址的最大内存空间
  4. 控制总线(读/写)指出总线周期的类型和本次输入/输出操作完成的时刻

单个芯片内存不会很大,一般通过,多个芯片集成在一个内存条上,再由多个内存条及主板上的ROM组成计算机所需内存空间,再通过总线和CPU相连

3.3.2 主存容量的扩展

单个存储芯片容量有限,在字数或字长上与实际要求有区别,因此需要在字和位两方面扩充才能满足需求。

位扩展法

  1. 用于增加存储字长。例如8片8K*1位的芯片连接成8K*8位的存储器

字扩展法

  1. 增加字数,位数不变

线选法

n n n条线对应 n n n个片选信号,效率不高 地址不连续

译码片选法

n n n条线对应 2 n 2^n 2n个片选信号 地址连续

字位同时扩展法

上述两种方法结合

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

3.4 外部存储器

3.4.1 磁盘存储器

磁盘存储器的优点:

  1. 存储容量大,位价格低
  2. 记录介质可以重复使用
  3. 记录信息可长久保存,不丢失
  4. 非破坏性读出。不需要再生

缺点:存取速度慢,机械结构复杂,对工作环境要求高

1.磁盘存储器

磁盘设备的组成

  1. 磁盘驱动器。核心部件是磁头组件和盘片组件。
  2. 磁盘控制器。硬盘存储器和主机的借口,主流的标准有IDE,SCSI,SATA等
存储区域

,磁盘按块存取

  1. 磁头数(Heads):即记录面数,表示硬盘有多少个磁头。
  2. 柱面数(Cylinders):表示硬盘每个盘面上有多少条磁道。在一个盘组中,不同记录面的相同编号(位置)的磁道构成一个圆柱面
  3. 扇区数(Sectors):

磁记录原理

磁头和磁性记录介质相对运动时,通过电磁转换完成读/写操作

磁盘性能指标

    1. 非格式化容量:磁记录表面可以利用的磁化单元总数
    2. 格式化容量:按照某种特定记录格式能存储的信息总量。(比前者小
    1. :沿半径方向单位长度的磁道数
    2. :磁道单位长度记录的二进制代码位数
    3. :位密度和道密度的乘积

需要注意的是

  1. :由三部分构成
    1. 寻道时间:磁头移动到目的磁道的时间(一般取平均值
    2. 旋转延迟时间:磁头定位到要读写扇区的时间(一般取平均值。
    3. 传输时间:传输数据所需要花费的时间
  2. :单位时间内向主机传输数据的字节数。 假设磁盘转速 r r r转/ s s s,每条磁道容量 N N N字节,那么数据传输率为 D r = r N D_r=rN Dr​=rN
磁盘地址

主机需要向磁盘控制器发送寻址信息。 通常磁盘地址组成为:

驱动器号 柱面号(磁道号) 盘面号 扇区号

假设系统有4个驱动器,每个驱动器带动一个磁盘,每个磁盘256个磁道,16个盘面,每个盘面划分为16个扇区,则地址构成如下

驱动器号(2) 柱面号(磁道号)(8) 盘面号(4) 扇区号(4)

硬盘的工作过程

硬盘的主要操作是:寻址、读盘、写盘。 每一个操作都对应一个控制字,硬盘工作时,先取控制字,然后执行 硬盘属于机械式部件,读写操作是串行的,同一时刻不可能既读又写,也不可能同时读写多组数据

2.磁盘阵列

:独立冗余磁盘阵列,多个独立的物理磁盘组成一个独立的逻辑盘,数据在多个物理盘上分割交叉存储、并行访问,具有更好的存储性能、可靠性和安全性

  • RAID0没有纠错能力
  • RAID1容量减少一半
  • RAID1~RAID5中,无论何时有磁盘损坏,都可以随时拔出手寸的磁盘,更换好的磁盘,而不会损坏数据

3.4.2 固态硬盘SSD

补充 光盘

3.5 高速缓冲存储器Cache

3.5.1 程序访问的局部性原理

包括时间局部性和空间局部性

  • ,因为程序中存在循环
  • ,因为指令通常顺序存放,顺序执行。数据一般也是以向量、数组等形式簇聚地存储在一起的

3.5.2 Cache的基本工作原理

Cache位于存储器层次结构的顶层, 为了方便Cache和主存交换数据,。Cache块又称Cache行,每行由若干字节构成,块的长度称为块长。 Cache容量远小于主存的容量,因此块的数量也远少于。Cache仅保存主存中最活跃的若干块的副本,

  1. CPU发出读请求
  2. 若访存地址在Cache中命中,则将该地址转换为Cache地址,直接对Cache进行读操作
  3. 若访存地址未在Cache命中,则仍需要访问主存,并把此字所在的块一次性调入Cache。若Cache已满,则需要根据某种替换算法,替换掉某一块。

3.5.3 Cache和主存的映射方式

Cache行的信息是主存中某个块的副本,

直接映射

C a c h e 行 号 = ( 主 存 块 号 ) m o d ( C a h c e 总 行 数 ) Cache行号=(主存块号)mod(Cahce总行数) Cache行号=(主存块号)mod(Cahce总行数) ,如果这个位置已经存在内容,那么会被替换出去 直接映射的 直接映射的地址结构:

标记 Cache行号 块内地址

  1. 标记位进行了优化,末尾几位可以通过Cache块号得到
  1. 某32位计算机按字节编址,Cache容量为16KB。Cache行大小为16B。主存和Cache采用直接映射,则0x1234E8F8的单元装入Cache的地址为: 解:Cache块地址空间大小=16KB/1B=16K=2^14,因此低14位地址即为Cache内地址
  2. 某存储系统中,主存容量为Cache容量的4096倍,Cache分为64个块,主存地址和Cache地址采用直接映像方式时,地址映射表的大小应该为(不考虑一致性唯一位和替换算法位):64*13bit 解:64块,4096=2^12,12bit再加上1bit有效位(表示是否装入Cache)
  3. 主存容量1MB,Cache容量16KB,每块8个字,每个字32位,采用直接地址映像方式,Cache起始字块为第0块,主存地址35301H存入Cache的第几个字块?(十进制) 解:直接映射的地址结构:Tag、行号、块内地址 每块8个字,每个字32bit=4B,因此每块2^5B,块内地址5位 主存容量220B,Cache容量214B,因此Tag有6位 (0011,01)(01,0011,000)(0,0001) 中间转换为十进制:8+16+128=152

全相联映射

,每一行包含标记,指出该行取自主存中的哪一块,所以CPU访存需要和所有Cache行的标记进行比较。

  1. 优点:灵活,Cache块的冲突概率低,空间利用率高
  2. 缺点:比较速度慢,实现成本高,需要采用昂贵的按内容寻址的相联映射存储器进行地址映射

全相联映射的地址结构:

标记 块内地址

组相联映射

将Cache块分为大小相等的Q个组,每个主存块可以装入固定组中的任意一行。 C a c h e 组 号 = ( 主 存 块 号 ) m o d ( C a c h e 组 数 Q ) Cache组号=(主存块号)mod(Cache组数 Q) Cache组号=(主存块号)mod(Cache组数Q) 组相联映射的地址结构:

标记 Cache组号 块内地址

  1. 有效容量128KB的Cache,每块16B,8路组相联,字节地址为1234567H的单元调入Cache,其Tag应该为: 解:首先要熟记祖相联映射的地址结构:Tag、组号、块内地址 每块16B=2^4B,因此块内地址4位;组数=128KB/(16B*8)=17-7=10bit;高位剩余部分即为Tag 1234567H=(0001,0010,0011,01)(00,0101,0110),(0111)

3.5.4 Cache中主存块的替换算法

采用直接映射时,一个给定的主存块只能放到唯一固定的Cache行中,无需考虑替换算法

常用的替换算法有:。最常考察LRU算法

  1. 随机算法:。实现简单,但不遵循局部性原理,因此命中率可能比较低
  2. 先进先出算法:,实现简单,但不遵循局部性原理,因为早调入的行也可能经常使用
  3. 近期最少使用算法(LRU):选择近期内最久未使用的Cache行作为替换的行。依据程序局部性原理
  4. 最不经常使用算法:一段时间内访问次数最少的块被替换出

LRU算法实现

最不经常使用算法的实现

  1. 每一行设置一个计数器,从0开始计数
  2. 每访问一次,该行所在计数器+1
  3. 替换时,将计数器值最小的一行替换出

3.5.5 Cache写策略

Cache中的内容是主存的副本,当

分为两种情况:写命中和写不命中

写命中:全写法、回写法

全写法

  1. 当CPU对Cache写命中时,
  2. 某一块主存需要替换时,无需将这一块写回主存。用新调入的块直接覆盖即可
  3. 优点:实现方式简单,保持主存和Cache数据的一致性;缺点:增加了访存次数

写缓冲:在Cache和主存之间加一个写缓冲队列,FIFO,减少全写法直接写入内存的时间损耗,解决速度不匹配的问题。频繁写时会导致写缓冲饱和溢出

回写法

  1. CPU对Cache写命中时,只把数据写入Cache,不立即写回内存;当这块被替换时,才写入内存
  2. 减少了访存次数,但存在不一致的隐患

每个Cache行设置一个,修改位为1, 说明内容修改过,替换时需要写回内存;反之未修改,不需要写回内存

  1. 假设主存地址位数为32位,按字节编址,主存和Cache之间采用全相联映射,主存块大小为1个字,每个字32位,采用回写法和随机替换策略。则能存放32K字数据的Cache总容量至少有多少位? 解:全相联映射地址结构:Tag、块内地址 Cache块大小和主存块大小一样,为1个字=32bit=4B,块内地址占2位,因此Tag占30位 回写法需要一位修改位,此外Cache需要一位有效位 数据需要32位 总共32K*(30+1+1+32)bit = 215*26bit=221bit=2048K bit

写未命中:写分配法、非写分配法

写分配法

加载主存的块到Cache中,然后更新这个Cache块。 试图利用程序的空间局部性,缺点是每次不命中都要从主存中读取一块

非写分配法

只写入主存,不进行调块


写分配法通常和回写法一起用 非写分配法通常和全写法结合使用

3.5.- 分离的Cache结构

随着新技术的发展(例如指令预取),需要将数据Cache和指令Cache分开设计,产生

统一Cache的优点:设计和实现相对简单;缺点:可能引发冲突

3.5.- 多级Cache结构

3.6 虚拟存储器

主存和辅存共同构成虚拟存储器,二者在硬件和系统软件的共同管理下工作。 对于应用程序员,虚拟存储器是透明的。 虚拟存储器具有主存的速度和辅存的容量

3.6.1 虚拟存储器的基本概念

虚拟存储器将主存或辅存的地址空间统一编址,形成庞大的地址空间。

用户编程允许涉及的地址称为,虚地址对应的存储空间称为 实际的主存单元地址称为,实地址对应的是

  1. CPU使用虚地址时,由硬件辅助找出虚地址和实地址之间的关系,判断这个虚地址对应的存储单元内容是否已经装入主存。
  2. 若已在主存中,则通过地址变换,CPU可以直接访问主存中的对应内容
  3. 若不在主存中,则把包含这个字的一页或一段调入主存后,再由CPU访问。若主存已满,则采用替换算法置换主存中的交换块

3.6.2 页式虚拟存储器

虚拟页式存储器以页为基本单位。虚拟空间和主存空间被划分为大小相同的页。

虚拟地址分为两个字段:。 虚拟地址到物理地址的转换由实现。页表存放在主存中,,是虚页号和实页号的对照表,他记录程序的虚页调入主存时被安排在主存中的位置。

1. 页表

页表的地址结构(虚页号

有效位 脏位/修改位 引用位 物理页/磁盘地址
表示页面是否在主存中 表明页面是否被修改过 配合替换策略进行设置,例如是否实现LRU算法 虚页放在哪个地址

CPU执行指令时,需要先将虚拟地址转换为主存物理地址

  1. 页表基址寄存器存放进程的页表首地址,根据虚拟地址高位部分的虚拟页号找到对应的页表项。
  2. 若装入位为1,则取出物理页号,和虚拟地址的低地址(页内地址)拼接,形成实际的物理地址
  3. 若装入位为0,则需要进行缺页处理

页式虚拟存储器的优点:页面长度固定,页表简单,调入方便 缺点:程序不可能全是页面的整数倍,最后一页的零头无法利用,造成

2. 快表(TLB)(TODO

地址转换过程中,需要,如果缺页,还要进行页面替换等…访问主存的次数增加了

按照程序的局部性原理,可以,可以明显提升效率 相应地, 地址转换时,先查询快表,命中则无须访问慢表

3.6.3 段式虚拟存储器

3.6.4 段页式存储器

标签: 如何放掉电容器一半电用于主板当中固态电容工作原理408电容二极管db220b

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台