欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

计算机组成原理 [CO] Ch3 存储系统

最编程 2024-04-21 15:03:53
...

文章目录

  • 考纲
    • 3.1 存储系统概述
    • 3.2 主存储器
    • 3.3 主存储器与CPU的连接
    • 3.4 外部存储器
    • 3.5 高速缓冲存储器
    • 3.6 虚拟存储器
  • 【※】存储系统总体流程图
  • 【※】各个部件的存储位置
    • 计算机存储相关硬件与数据结构说明
      • 进程控制块(PCB)
      • 页表
      • 页表始址
      • 页表始址寄存器(PTR)
      • MMU(内存管理单元)
      • TLB(Translation Lookaside Buffer,快表)
      • Cache
      • PS:
  • 【※】DRAM芯片计算引脚的数目
    • 计算芯片引脚的数目
  • 【※】多模块存储器
    • 双端口RAM
    • 多模块存储器
      • 高位交叉编址
      • 低位交叉编址
      • 计算主存的带宽
        • 微观角度:
        • 宏观角度:
  • 【※】磁盘存储器
    • 磁盘的设备组成
    • 磁盘的性能指标
    • 磁盘地址
    • 磁盘阵列RAID
  • 【※】固态硬盘SSD
    • 原理
    • 组成
    • 读写性能特性
    • 与机械硬盘相比的特点
    • 磨损均衡技术
  • 【※】Cache性能分析
    • Cahce性能分析
    • 技巧【计算Cache的命中率】:
    • Cache的命中率与:
    • 如何区分Cache与主存的数据块对应关系?
    • Cache很小,主存很大。如果 Cache 满了怎么办?
    • CPU 修改了 Cache 中的数据副本,如何确保主存中数据母本的一致性?
  • 【※】主存地址与Cache的映射关系、地址结构
  • 【※】Cache总位数/总容量
  • 存储器概述
    • 存储器性能指标
  • SRAM和DRAM的比较
  • 存储器与CPU的连接

考纲

本章是重点里的重点,大题小题的考频都很高。本章常结合操作系统一起考察,是408里跨学科考察最多的一章。王道书3.1~3.4主要考小题;3.5、3.6经常考大题,要深入理解和学习。

3.1 存储系统概述

  • 比较简单的一个小节,概念较多,重点记忆“存储器的性能指标”如何计算。
  • 本节两个大题建议做一做,是很有代表性的考法。

3.2 主存储器

  • SRAM、DRAM芯片的底层硬件原理不用过度深究,只需要了解它们之间有什么特性区别即可。王道书“3.2.1_3.DRAM芯片的读写周期” 部分过于底层,讲了电气特性,简单了解即可,计组课程里不用深究。
  • 只读存储器ROM事实上已经从大纲里删除,今年大家只需要简要了解即可,不用花时间记忆。王道书里依然坚持讲ROM是因为固态硬盘SSD、Flash存储器本质上也是一种ROM,因此也决定了固态硬盘和Flash存储器“读快写慢”的重要特性。
  • 要理解主存储器的基本组成,需要知道每个寄存器作用,主存内部各个基本部件之间是如何相互协调工作的,以及CPU是如何与主存交互的。
  • 视频3.2.4 中介绍了双端口RAM、多模块存储器。前者(双端口RAM)已从408大纲删除,自命题考生仍需学习,408考生简单了解即可。

3.3 主存储器与CPU的连接

  • 本节内容通常考察小题,目前408未出现过大题。
  • 截至目前,408历年真题中还没有考过让你把主存和CPU“画图连线”的大题。通常只会在选择题中考察“字扩展、位扩展、字位扩展”相关的小题,做题难度不大。

3.4 外部存储器

  • “磁盘存储器”是操作系统和计组都会讲的考点,相对来说操作系统讲的会更详细深入。因此,如果在计组这边第一次学习磁盘存储器,感觉理解不透也没关系,学完操作系统再回来看会容易很多。
  • “固态硬盘”是2022年大纲新增的考点,个人认为近几年极有可能考选择题,重点注意固态硬盘的读写特性(读快写慢、随机读写、写前需擦除、擦除寿命有限)以及负载均衡技术。大家只要能理解课件内那张思维导图,做选择题一定没问题。

3.5 高速缓冲存储器

  • 大题高频考点,常与操作系统第三章结合考察,综合性较高,但大题题型套路相对固定。
  • 强化阶段会用一个例子帮助大家串联操作系统第三章与Cache的相关知识。
  • 适合在第一轮做的大题已在学习进度打卡表中说明,未写进打卡表的题目中含有后序章节内容,不建议在第一轮做。

3.6 虚拟存储器

  • 本节内容和操作系统第三章高度重合。计组这边建议先快速看看书,有个大概的了解即可,等学完操作系统第三章,第二轮复习时再回来仔细研究。

【※】存储系统总体流程图

在这里插入图片描述

【※】各个部件的存储位置

在这里插入图片描述

计算机存储相关硬件与数据结构说明

进程控制块(PCB)

  • 存放在主存的系统区(内核区)中,是一个数据结构,用于存储进程的各种信息。

页表

  • 存放在 PCB 中,用于描述每个进程的虚拟空间与物理内存的映射关系。每个进程的低地址部分或高地址部分可能映射到同一片内核空间。

页表始址

  • 存放在 PCB 中的 unsigned int 变量,指示页表的起始地址。

页表始址寄存器(PTR)

  • 存放在 MMU 中,系统运行进程前(切换进程)CPU 将会把页表始址复制到页表始址寄存器中,每个进程的页表始址不同。

MMU(内存管理单元)

  • 集成在 CPU 中,负责虚拟地址到物理地址的转换。

TLB(Translation Lookaside Buffer,快表)

  • 高速存储器,通常由相联存储器或 SRAM 组成,包含于 MMU 中,属于 CPU。存放当前进程的页表项的副本数据,用于加速地址转换。
  • 缺失处理由硬件自动实现。

Cache

  • 高速存储器,由 SRAM 组成,包含于 CPU,但不属于 MMU 的一部分。
  • 切换进程时,Cache 进程不作废,不同进程可能共享同一页框。
  • 缺失处理由硬件自动实现。

PS:

  • TLB 和 Cache 在底层硬件原理上相同(SRAM),但作用不同。
    • TLB(快表)存放着当前进程的页表项的副本数据,用于加速地址转换。
    • Cache 存放着内存块的副本数据,用于加速数据访问。

• 在进程被调度,开始运行之前,CPU 会将其页表始址存放到页表始址寄存器中,每切换一个进程,页表始址寄存器内容改变,也就是切换了一张页表。

• 若新进程上处理机运行时,TLB 的副本数据则全部作废,有效位全部变成 0。而 Cache 中的内容不需要全部作废。当刚开始运行新进程时,会经常发生 Cache 未命中的情况。

即:当 A 进程切换到 B 进程时:
① 页表始址寄存器更新
② TLB 副本数据全部作废,Cache 不需要全部作废

【※】DRAM芯片计算引脚的数目

• ABC 位:行数=A,列数=B,一个超元=C 位。
• 访问内存时,DRAM 芯片的读取过程:

  • 从地址线获取内存地址,进行行、列译码。
    • 先行:将对应行的整行数据放入行缓冲中。行缓冲是一整行的超元。
    • 后列:将行缓冲中对应的超元读到数据线。

计算芯片引脚的数目

在这里插入图片描述

【※】多模块存储器

双端口RAM

在这里插入图片描述

  • 支持两个 CPU 同时访问 RAM。
  • 可同时读/写不同的存储单元。
  • 可同时读同一个存储单元。
  • 不能同时写(或者一读一写)同一个单元。
  • 若发生“冲突”,则发出“BUSY”信号,其中一个 CPU 的访问端口暂时关闭。

多模块存储器

在这里插入图片描述

高位交叉编址

  • 理论上多个存储体可以被并行访问,但是由于通常会连续访问,因此实际效果相当于单纯的扩容。

低位交叉编址

  • 每个存储周期内可读写地址连续的 m 个存储字。
  • 每个体的存储字 = 总线的宽度。
  • 微观上,m 个模块被串行访问;
  • 宏观上,每个存取周期内所有模块被并行访问。
  • 连续取 n 个存储字耗时: T + ( n − 1 ) r 。 T + (n−1)r。 T+(n1)r
  • 存储体周期为 T,总线传输周期为 r,为了使流水线不间断,应保证模块数: m ≥ T / r m ≥ T/r mT/r

计算主存的带宽

  • 模块数:m、存储周期:T、字长:W、数据总线宽度:W、总线传输周期:r、连续存取 n 个字。
  • r = T / m r = T/m r=T/m
微观角度:
  • 连续取 n 个存储字耗时: T + ( n − 1 ) r T + (n−1)r T+(n1)r
  • 连续取 n 个字大小: n ∗ W n∗W nW
  • 主存的最大带宽 = ( n ∗ W ) / ( T + ( n − 1 ) r ) (n∗W) / (T + (n−1)r) (nW)/(T+(n1)r)
  • PS:当 n 较大时,带宽 → W/r,相当于 m 个存储体并行工作
宏观角度:
  • 一个存储周期内,低位交叉存储器可以提供的数据量为单个模块的 m 倍
  • 单个存储体的带宽 = W / T 单个存储体的带宽 = W/T 单个存储体的带宽=W/T
  • 主存的最大带宽 = m ∗ W / T 主存的最大带宽 = m∗W/T 主存的最大带宽=mW/T

【※】磁盘存储器

磁盘的设备组成

  • 磁头数:即记录面数,表示硬盘总共有多少个磁头。磁头用于读取/写入盘片上记录面的信息,一个记录面对应一个磁头。
  • 柱面数:表示硬盘每一面盘片上有多少条磁道。在一个盘组中,不同记录面的相同编号(位置)的诸磁道构成一个圆柱面。
  • 扇区数:表示每一条磁道上有多少个扇区。
    在这里插入图片描述

磁盘的性能指标

  • 容量:格式化与非格式化【更大】
  • 记录密度:道密度、位密度、面密度
  • 平均存取时间
    • 寻道时间(磁头移动到目的磁道)
    • 旋转延迟时间(磁头定位到所在扇区,即磁盘旋转半圈需要的时间)
    • 传输时间(传输数据所花费的时间)
  • 数据传输率:假设磁盘转数为 r(转/秒),每条磁道容量为 N 个字节,则数据传输率为 D r = r N D_r=rN Dr=rN

磁盘地址

  • 驱动器号 ∣ 柱面 ( 磁道 ) 号 ∣ 盘面号(磁头号) ∣ 扇区号 驱动器号|柱面(磁道)号|盘面号(磁头号)|扇区号 驱动器号柱面(磁道)盘面号(磁头号)扇区号
  • 柱面号 = ⌊ 簇号 / 每个柱面的簇数 ⌋ 柱面号 = ⌊ 簇号 / 每个柱面的簇数 ⌋ 柱面号=簇号/每个柱面的簇数
  • 磁头号 = ⌊( 簇号%每个柱面的簇数)/每个磁道的簇数 ⌋
  • 扇区号 = 扇区地址 % 每个磁道的扇区数

磁盘阵列RAID

  • 思想:利用磁盘廉价的特点提高存储性能、可靠性和安全性
  • RAID0:条带化,提高存取速度,没有容错能力【把连续的数据分割成相同大小的数据块,把每段数据分别写入到阵列中不同磁盘上的方法】
  • RAID1:镜像磁盘互为备份
  • RAID2~5:通过数据校验提高容错能力

【※】固态硬盘SSD

原理

  • 基于闪存技术 Flash Memory,属于电可擦除 ROM,即 EEPROM。
  • 是一种半导体存储器。
  • 是一种非易失性存储器。
  • 采用随机访问方式,可以代替计算机外部存储器。

组成

  • 闪存翻译层:负责翻译逻辑块号,找到对应页(Page)。
  • 存储介质:多个闪存芯片(Flash Chip)。每个芯片包含多个块(Block),每个块包含多个页(Page)。
    在这里插入图片描述

读写性能特性

  • 以页(Page)为单位读/写,相当于磁盘的“扇区”。
  • 以块(Block)为单位进行“擦除”,擦干净的块中的每页都可以写入一次,读取无限次。
  • 支持随机访问,系统给定一个逻辑地址,闪存翻译层可以通过电路迅速定位到对应的物理地址。
  • 读取速度快、写入速度慢。如果要写入的页有数据,则不能直接写入,需要将块内其他页全部复制到一个新的(擦除过的)块中,再写入新的页。

与机械硬盘相比的特点

  • SSD 读写速度快,随机访问性能高,通过电路控制访问位置;
  • 机械硬盘通过移动磁臂旋转磁盘控制访问位置,有寻道时间和旋转延迟;
  • SSD 安静无噪音、耐摔抗震、能耗低、造价更贵;
  • SSD 的一个“块”被擦除次数过多(重复写同一个块)可能会损坏,而机械硬盘的扇区不会因为写入次数太多而损坏。

磨损均衡技术

  • 思想:将“擦除”平均分布在各个块上,以提升使用寿命。
  • 动态磨损均衡:在写入数据时做出决策,优先选择累计擦除次数少的新闪存块。
  • 静态磨损均衡:SSD 空闲时,将数据按读写特性进行迁移。SSD 监测并自动进行数据分配、迁移,让老旧的闪存块承担以读为主的存储任务,让较新的闪存块承担更多的写任务。

【※】Cache性能分析

Cahce性能分析

  • t c t_c tc 是访问一次 Cache 所需要的时间, t m t_m tm 是访问一次主存需要的时间
    • 命中率 H:CPU 欲访问的信息已经在 Cache 中的比率, H = 总命中次数 / 总的 C a c h e 访问次数 H = 总命中次数 / 总的 Cache 访问次数 H=总命中次数/总的Cache访问次数
    • 缺失率 M = 1 − H M = 1 − H M=1H
    • Cache-主存系统的平均访问时间 t 为:
      • 先访问 Cache,若 Cache 未命中,再访问主存: t = H × t c + ( 1 − H ) × ( t c + t m ) t = H×t_c + (1 − H) × (t_c + t_m) t=H×tc+(1H)×(tc+tm)
      • 同时访问 Cache 和主存,若 Cache 命中,则立即停止访问主存: t = H × t c + ( 1 − H ) × t m t = H×t_c + (1 − H) × t_m t=H×tc+(1H)×tm
    • C a c h e − 主存系统的性能效率 = 访问 C a c h e 的时间 / 系统平均访问时间 = t c / t Cache-主存系统的性能效率 = 访问 Cache 的时间 / 系统平均访问时间 = t_c / t Cache主存系统的性能效率=访问Cache的时间/系统平均访问时间=tc/t

技巧【计算Cache的命中率】:

  • 如果每一行的 Cache 缺失情况一样,则可以只讨论一行的缺失情况。
  • 互换行列的访问顺序后,Cache 命中率要么猜同上,要么猜 0。

Cache的命中率与:

  • Cache 的容量、块的大小、地址映像方式和替换算法有关。
  • 每次被访问的主存块,一定会被立即调入 Cache。

如何区分Cache与主存的数据块对应关系?

  • Cache 和主存的映射方式。

Cache很小,主存很大。如果 Cache 满了怎么办?

  • 替换算法。

CPU 修改了 Cache 中的数据副本,如何确保主存中数据母本的一致性?

  • Cache 写策略。

PS:

  • 比较器的个数就是分组中的 Cache 行数。
  • 比较器的位数就是 Tag 标记位数 20。

【※】主存地址与Cache的映射关系、地址结构

  • 主存容量 / C a c h e 容量 = 2 标记位( t a g ) 主存容量 / Cache 容量 = 2^{标记位(tag)} 主存容量/Cache容量=2标记位(tag
  • 做题时要看清题目给出的是主存地址还是主存块号。
    • 主存块号 = 主存地址 / 块的大小 主存块号 = 主存地址 / 块的大小 主存块号=主存地址/块的大小
      在这里插入图片描述

【※】Cache总位数/总容量

  • 数据区【Cache块的大小】+标记区【存储容量+标记阵列容量】

  • 标记阵列:
    在这里插入图片描述

  • 数据区【Cache块的大小】+标记区【存储容量+标记阵列容量】

  • 标记阵列:
    -

  • 数据区 = Cache块的大小(B)* 8,因为一般都是问Cache总位数,注意题目条件

存储器概述

随机存储器【RAM】

  • 读写方便,使用灵活

  • RAM分为静态RAM和动态RAM

  • RAM主要为用户编程设置的

  • 存储器的任何一个存储单元都可以随机存取

  • 存取时间与存储单元的物理位置无关

  • 主要用于做主存(DRAM)或高速缓冲存储器(SRAM)

只读存储器【ROM】

  • ROM与RAM一起统一构成主存的地址域

  • ROM和RAM的存取方式均为随机存取

  • 操作系统的内存储器既有RAM也有ROM

  • 广义上的ROM现在可通过电擦除进行写入

  • ROM存放系统程序,标准子程序和各类常数

  • 存储器的内容只能随机读出而不能写入

  • 信息一旦写入就不变,断电后也不消失

  • 通常用于存放固定不变的程序,常数和汉字字库

串行访问存储器

顺序存取存储器【磁带】

  • 存取速度慢
  • 只能按某种顺序存取

直接存取存储器【磁盘,光盘】

  • 既不是随机存取也不是按顺序存取

存储器性能指标

  • 存储容量 = 存储字数 × 字长
  • 单位成本(每位价格) = 总成本 / 总容量。
  • 数据传输率(主存带宽) = 数据的宽度 / 存储周期。
  • 存储周期 = 存取时间 + 恢复时间

SRAM和DRAM的比较

属性 SRAM【Static Random Access Memory】 DRAM【Dynamic Random Access Memory】
主要用途 Cache 主存
存储信息 触发器,双稳态电路 电容
破坏性读出
需要刷新 不需要 需要【由存储器独立完成,不需要CPU的控制】
送行列地址 同时送 分两次送 【地址线复用技术,导致地址线、地址引脚减半】
运行速度
集成度
存储成本
是否易失

存储器与CPU的连接

在这里插入图片描述