Advertisement

871王道 - 计算机组成原理 - 学习笔记 ——第3章 存储系统

阅读量:

871王道 - 计算机组成原理 - 学习笔记 ——第3章 存储系统

  • 1.存储器的概念概述

    • 1.1.存储器的分类体系
        • 1.1.1.功能维度下的层次划分
        • ==1.1.2.存取策略下的划分==
        • 1.1.3.信息动态特性的特征
        • 1.1.4.信息持久性的属性
        • 1.1.5介质类型下的区分
      • 1.2.存储器的性能指标

  • 主存储器的构成

    • 核心组成部分
      • 半导体器件的工作机制
        • 芯片内部运行机制
        • 地址控制逻辑
  • 2.2 可快速访问内存:SRAM元件和DRAM元件

    • 2.2.1 恒定内存(SRAM)
    • 2.2.1 转换内存(DRAM)
  • 其中,“静态随机存取内存单元称为SRAM”

  • 第二章第三节中的只读存储器(Rom)

  • 第二章第三节中的只读存储器(Rom)的主要特性

    • 第二章第三节中关于Rom类型的分类
    • 计算机内部关键的Rom类型
    • 第二章第三节总结

考试重点

考试重点

  • 3主存储器与CPU的连接
    • 3.1连接原理

    • 3.2主存容量的扩展

      • 3.2.1位扩展法
      • 3.2.2字扩展法
      • ==3.2.3字位扩展法==
    • 3.3存储芯片的地址分配和选片

      • ==3.3.1线选法==
      • ==3.3.2片选法==
    • ==3.4存储器和CPU的连接==

本章重中之重:大题小题高频考点

本章重中之重:大题小题高频考点

常考:简答题:是什么?

本章重点:高频考点总结

非常重要,重中之重,常见复试中

复制代码
* 5.5Cache写策略
  • 6.虚拟存储器【不考,只有一个J】
    • ==6.1虚拟存储器与Cache的比较【简答题】==

1.存储器的基本概念

1.1.存储器的分类

1.1.1.按作用分类(层次结构)

1)主存储器:其容量有限、存取速度较快,在单个单元上的价格较高
2)辅存储器:其存储容量极大、存取速度较低,在单个单元上的成本较低
3)缓存:其容量有限、存取速度非常迅速,在单个单元上的价格昂贵

需要默写

1

(默写图)多级存储器结构 - 下
(默写图) 三级存系统的层次结构及其构成 - 上

三层存储系统:

  1. 高速缓存单元(Cache)可以直接供CPU进行数据处理。
  2. 主存储器/内存可以直接供CPU进行数据处理。
  3. 外设存储设备(辅存)即为外存。

在现代计算机体系结构中, 高低结合的方式实现了资源的有效共享与优化配置.

ps. 上一层的内容均仅是下一层数据的一个拷贝实例,在具体实现中可观察到这一特性:例如,在Cache层次中存储的数据量仅仅是主内存容量的一小部分,在主内存中存储的数据量又仅仅是Secondary Storage中可用空间的一小撮。

在这里插入图片描述

层次结构主要体现:
1. 缓存——主存层次:
①缓解主存与CPU运行速度不匹配的技术难题。
②缓存与主存量之间数据传输功能由专门硬件设备独立执行,并无需程序员直接干预即可实现高效操作。
2. 主存——辅存在储层次:
①针对主存量有限这一限制条件,在理论上实现了内存空间的动态扩展功能(即虚拟化存储空间)。
②数据传输需借助硬件设备配合操作系统共同完成,在实际应用中则主要依赖于软件层面的操作系统进行配置与管理(因为系统管理员负责相关参数设置)。
③辅存在储中的数据信息仅在调入到主内存后方能被中央处理器(CPU)识别并加以利用。

分层的目的: 解决速度、容量、成本三者之间的矛盾。

1.1.2.按存取方式分类

随机存储器(RAM) :RAN, RAM,"random storage":CPU能够对任意一个存储单元中的数据进行随机访问,并且其访问时间与物理位置无关。

Random Access Memory(RAM)的全称是Random Access Memory(RAM),其中文名称为易失性存储器 ,其主要功能是临时存储数据。是否所有RAM设备都是易失性存储器?

在这里插入图片描述

四个主要特点如下
1)支持读写功能;
2)核心特性为随机访问,并且其访问时间不受物理位置影响;
3)主存储器采用SRAM设计实现缓存功能;
4)一旦断电后将失去所有数据内容。

分类:
①静态随机存储器(SRAM):
②动态随机存储器(DRAM):

突然发现自己就像个临时存储设备(比如硬盘),一断电(或者说睡觉)就归零了
-觉得有点无奈的是必须要把数据保存到一个长期存储器里(例如硬盘)


  1. 只读存储器(ROM) :仅支持随机存取输出(即仅能执行随机存储操作)。这种类型的存储器具有不可恢复性特征,在断电后不会丢失数据。

5个特点:
1)仅能进行随机读取操作,而无法执行写入操作
2)一旦存储则永久保持不变
3)作为主存系统的一部分共同构成地址空间范围
4)主要用于存储不可变的数据块(如常数和汉字集合)
5)具有持久性特征

ROM与RAM各自都是随机存储器;它们都具备相同的特性。
CD-ROM与ROM不相同; CD-ROM是一种串行存储设备;它不具备只读功能。


  1. 串行访问存储器 (SAM、DAM):按照物理位置的先后顺序寻址。
  1. 能够执行读写操作
  2. 必须按照物理地址顺序进行访问
  3. 分类如下:
    ① 基于顺序存取的存储器(SAM):磁带
    ② 基于直接存取技术的存储器(DAM):光盘、磁盘
    注意:
  • 光盘包括CD-ROM等只读型存储设备
  • 磁盘则包含不同类型的存储介质

相联存储器(CAM):基于内容或地址的方式进行寻址(采用内容指定方式与地址指定方式综合确定搜索地址),例如块表结构。基本原理:其部分信息被用作检索项(即作为关键字项)去搜索存储器。

ROM和RAM都是采用随机存取方式(✔)

1.1.3.按信息的可更改性

  1. 读写存储器(RM):Read/Write Memory(即Read/write Memory),具有可读性和可写的特性(通常指计算机中的Memory单元及其高速缓存)。
  2. 只读存储器(ROM):仅用于只读操作的存储设备,在计算机系统中常用于BIOS初始化。

1.1.4.按信息的可保存性

易失性存储器:一旦断电后信息即会消失的一种存储器类型。例如RAM(随机访问记忆体)。当系统开机时,在主存和Cache中使用的数据会被从辅存加载。

不具有易失性的存储器,在断开电源后仍能保持信息。例如:ROM;磁表面存储器;光储装置。

破坏性读出:信息读出后,原存储信息被破坏。如 DRAM芯片

非破坏性读出:信息读出后,原存储信息不被破坏。如 SRAM芯片、磁盘、光盘。

1.1.5按存储介质分类

  1. 磁 表面/芯 存储器:磁盘、磁带
  2. 半导体存储器:MOS、双极存储器
  3. 光存储器:光盘
在这里插入图片描述

2

1.2.存储器的性能指标

在这里插入图片描述

回顾:

  • 数据存储结构 -> 由m个数据存储单元组成 -> 由m个数据存储元件构成 (由单一比特组成)
  • 这串二进制序列:表示一个数据项
  • 这串二进制序列的长度:表示数据项长度(例如8位)

公式解读:

存储容量 = 存储字数 x 字长

  • 注意断句:存储字 数,存储字の数 = 一个存储体有多少个字 = 存储单元的数量

记这个好

容量:表示能够保存的数据数量及其长度(如1M * 8位)。
速度
①完成一次存储操作所需要的时间。
②两次独立操作之间的时间间隔;或一次完整读写所需的时间。
③衡量数据传输效率的标准:单位时间内所处理的信息量。
= 数据宽度(MDR位数) / 存取周期

在这里插入图片描述

恢复时间:任意一种存储器在完成一次读写操作后都需要一定的时间间隔来回补其内部状态以实现数据的正确复原。存取周期 ≠ 存取时间

在这里插入图片描述

2.主存储器

在这里插入图片描述

2.1.主存储器的基本组成

回顾 MDR、MAR:

在这里插入图片描述

MAR位数和存储器单元个数对应,MAR10=>2^10个存储单元

在这里插入图片描述

模拟:CPU的读写过程

想要从主存中获取一个信息字:
1)CPU将该信息字的地址传输至MAR中
2)经由地址总线将该地址发送至主存系统
3)CPU发布一个"读取"指令
4)主存系统响应"读取"指令后执行数据采集
5)获取该信息内容后将其存储于MDR寄存器中
6)CPU决定如何处理MDR中的数据流……

想要向主存输出一个信息字:

2.1.1基本半导体元件及原理

在这里插入图片描述

译码器驱动:
译码器的作用:负责将地址总线送来的地址信号转换为对应于存储矩阵中各存储单元的选择控制信号。

地址线:单向输入!m根
数据线:双向输入!n根

◉ 出考题
=> 芯片容量 = 2^(m*n)

读/写控制线:
作用:控制芯片进行读或写操作
特点:共用一根/分用两根

片选线:
作用:选择存储芯片(∵半导体存储器由许多芯片构成)
特点:一根/两根


对高分无要求的同学,↓电路可以不用掌握


在这里插入图片描述
  1. MOS管(作为通电开关):半导体,通过向其输入电压控制其开关。
在这里插入图片描述

电容(储存电荷,并且也就是存储二进制0/1):
在存储过程中,在低电压状态下将被标记为0值,在高电压状态下则被标记为1值;当MOS管导通时,在电容内的电压通过该电路传递出来的信号表示二进制的0/1值。

行单位采用多通道技术:将多个存储元集成在一个结构中,并支持一次性读取或写入多路二进制数据;红线上接有大量MOS管,在其上方施加电压时会触发全部导通;此时电路中的电容就会通过绿线放电,在检测绿线上的信号变化后即可识别整行存储元所记录下的全部二进制信息;其中:

  • 存储单元是由一行完整的存储元组成的;
  • 存储体则是由若干个独立的存储单元构成的整体;
  • 存储字是指每次可输出一位二进制数据;
  • 存储字长则是指每次可输出若干位连续排列的二进制信息位数

2.1.2存储器芯片的基本原理

在这里插入图片描述

存储单元的数量由MAR的位数决定;译码器会接收来自CPU的一条地址线路;当接收到来自 MAR 的一条特定地址时;会使得相应的字选择线路(红线部分)处处于高电平状态;随后利用绿线路来读取该内存单元中的数据;最终将这些数据经由数据总线传递出去。

控制电路的作用是只有当前操作的电流稳定时,才进行下一步操作

选中线:用于决定对存储单元的操作选择(占用一根引脚)。
读/写控制线:指示此操作属于读取还是存储功能(若两者结合使用,则占用一根引脚;分开使用则需两根引脚)。

总容量由存储单元数量与每位存储容量的乘积决定
其中对于8K × 8位的情况而言:
每位存储容量对应的是2¹³ × 8 bit
而对于64K × 16位的情况而言:
每位存储容量则提升至2¹⁶ × 16 bit

2.1.3寻址

在这里插入图片描述

1.一行为一个存储字,字长为4B,总容量为1KB,则共有256个字,即256行

2.按字节编址:每个字节都有唯一的地址,在内存中被划分为总共1K个存储单元;其中每个存储单元占用的是1Byte(共需使用10根地址线)

3.按字寻址:一个字对应一个地址,分为256个单元,每个单元4B

4.按半字寻址:半个字对应一个地址,分为512个单元,每个单元2B

4.按双字寻址:两个字对应一个地址,分为128个单元,每个单元8B

2.2 随机存取存储器:SRAM芯片和DRAM芯片

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

地址码相同的“存储元” ——> 一个存储单元 ——>存储体

在这里插入图片描述

(默写图)SRAM和DRAM各自的特点 对比

相同点: 两者均为易失性寄存器/随机存取型临时存储介质(一旦断电信息即丢失=若电源一直不中断则信息不会丢失)。

区分易失性和破坏性 readout
1)
2)在破坏性 readout 中:打开并施加测试电路至电容两端,在此过程中类似于用试纸检测化学物质以确定其种类或特性。这将导致电容放电并释放能量到测试电路中。类似地,在静态随机存取存储器(RAM)中则可以通过直接观察判断存储单元的状态差异

Static,静态
Dynamic,动态

2.2.1 静态随机存储器(SRAM)

核心区别

核心区别

本质特异点

本质特异点

在这里插入图片描述

用于:主存

2.2.1 动态随机存储器(DRAM)

其中存储单元采用栅极电容结构并配置了一个单个晶体管。
该方法通过利用栅极电压的变化完成对0和1两种逻辑状态的充放电信路控制。
由于这种方法会在读取过程中损坏存储介质导致每次操作都需要重新编程以恢复工作状态。
这不仅使得设备体积大幅缩小还能显著提升系统的集成度同时降低了整体电路复杂度。

  1. 用于:Cache
  2. 刷新:
在这里插入图片描述

在DRAM中需频繁进行刷新操作,在SRAM中则无需此类操作。
① refresh operation occurs every 2 milliseconds
② 按行单元处理时,在每次操作中仅涉及一个存储行。
采用行列地址方案,则可将所需的选通线数量减少一半。
③ refresh operation does not require CPU involvement

三种刷新方式:
①集中 刷新模式会在每个周期内执行128次 刷新操作。
②分散 刷新模式没有无法访问存储器的区域。
③异步 刷新模式会在每个周期内执行一次 刷新操作,并且降低了停顿时间。

当计算机开机时, BIOS引导程序固化于ROM内,并将操作系统的启动过程指引至主内存。

计puter的操作系统存储于hard disk上.

内存储器由RAM与ROM构成: RAM用于开机缓存及应用程序运行; ROM包含启动引导程序。

对比

SRAM/DRAM由哪些线组成?

在这里插入图片描述

DRAM的硬件电路遵循矩阵分布结构,并因此采用地址复用策略;SRAM则遵循行列独立的工作模式。

SRAM={地址总线上、数据总线上、选择端子(通常为两个)、控制访问状态总线上} DRAM={
地址总线上、数据总线上、行或列选择端子(通常为两个)、控制访问状态总线上}

注意:
行/列通选线可以代替片选线。

2.3.只读存储器(ROM)

承上启下:(逻辑上RAM和ROM统一编址)

RAM { SRAM,DRAM }
ROM { … }

在这里插入图片描述

2.3.1只读存储器(ROM)的特点

两个显著优点:

  1. 架构简洁
  2. 不易丢失特性且具有稳定性强
    PS. ROM为非易失性存储,断电后不会消失(RAM为易失性)
在这里插入图片描述

2.3.2 ROM的类型

掩模式只读存储器(MROM):任何人不可以改写

一次可编程只读存储器(PROM):P-programable,写一次后不可更改

具有光擦除功能的可编程只读存储器(EPROM)能够执行多次数据重写。然而重写过程相对复杂且耗时较长,并且由于每次重写的间隔时间有限其速度仍无法满足频繁读取的应用需求因此不宜将其用于频繁读取的应用场景中

Flash存储器:闪存。能够反复快速地进行删除和更新操作,并且在写作前需先擦除数据(在写作前需先擦除)。例如U盘和手机辅助存储器。

固态硬盘(SSD):可进行多次快速擦除重写

2.3.3计算机内的重要ROM

在这里插入图片描述

主存中,逻辑上 RAM和ROM 统一编址。

在这里插入图片描述

2.3.4本节小结

在这里插入图片描述

计算一些芯片引脚的数量

公式 —— 引脚 = 数据引脚 + 地址引脚 + 读/写控制线引脚(1/2) + 片选线(1) 或 行/列通选控制线(2)
.
注意多多版 —— 引脚 = 数据引脚 + 地址引脚(要考虑是否减半 DRAM) + 读/写控制线引脚(通常2根但可共用一根具体情况具体分析) + 片选线(SRAM 1根) 或 行/列通选控制线(DRAM 2根)
.
注释:
1、数据引脚:数量等于存储单元的字长(例如8k x 8位表示数据宽度为8bit)。
2、地址引脚:n位地址对应2^n个存储单元 总容量=存储单元个数 x 存储字长(8bit即一个字节)。n=log₂(存储单元个数)(其中K= 2^10 M= 2^20)
常见描述方式:8k x 8位表示存储单元个数为8k n=log₂(8k)=13位地址
可能的描述方式:8192 x 8192 x 8bitDRAM芯片(行-列-bit)
注意事项:RAM采用地址复用技术后会分两次传输地址信号因此地址数目会减半而ROM无需此操作。
3、读/写控制线引脚:通常有两根但也可能共用一根具体情况由题目决定。
4、片选线或行/列通选控制线:在DRAM中由于采用了两次送行的方式因此在DRAM中如果没有行或列的通选信号就无法区分是行还是列因此会有两根;而SRAM则是一次性传输无需分步。

在计算方面:
总容量等于存储单元数量乘以存储位数
地址占用的比特数:n比特地址占用的比特数=log₂(存储单元数量)

换算:
K= 2^10,M= 2 ^20。8个比特1个字节。

2.4 多模块存储器​【考试重点】

在这里插入图片描述

起因: 哪怕是单核CPU,速度也比内存快,而且内存还要恢复时间。

ps. “双端口RAM”和“多模块存储器”​ 是两种内存/主存优化技术。(提速

多模块存储器属于一种空间并行技术,其通过多个结构完全相同的小型模块协同工作来实现吞吐率提升。常见的类型包括单体多字型和双体低位交叉型。

这个小节我们要解决的两个问题:

在这里插入图片描述

——————啊
————啊
——啊
—啊
-——啊
————啊
——————啊

在这里插入图片描述

问题①:A:用双端口RAM。
问题②:A:用多模块存储器。

2.4.1单体多字存储器

在这里插入图片描述
  1. 特点:
  2. 缺点:

使用同一套电路控制(类似位扩展)

在这里插入图片描述

2.4.2多体并行存储器

在这里插入图片描述

注意区分!{ 存储周期 VS. 存取周期 }

  • ⇨ 存储周期
    主体不同:是CPU 。从CPU发出指令给内存时,便会要求内存取用特定地址的数据,内存响应CPU后便会将CPU所需要的数据送给CPU,一直到CPU收到数据为止,便成为一个读取的流程。
    存储周期是指CPU连续启动两次操作所需间隔的最小时间,即两次独立的存取操作之间所需的最短时间。

——————————————

  • 访问时间/读写时间
    通常用于描述存储器完成一次读取或写入操作所需的时间。

    • ⇨ 存取周期 :(歇会,等着呢,等着整点报时)
      存储器在一次存取操作后需要一定的恢复时间,每次访问完都得等这个存储体(存取周期)恢复,这个时间是上一次读/写操作到下一次可以读写操作前的周期,含等待内存的恢复时间,主要的部分就是在等待内存恢复。也就是,连续启动两次独立的“读”或“写”操作(如连续的两次“读”操作)所需的最短时间,称为存取周期。存取周期=读写时间+等待内存恢复的时间
      ———————————————————————————————————————
在这里插入图片描述

编制方式访问顺序:
将这些地址信息转换为十进制数值后发现:
①高位交叉编址对应的地址访问序列等于按照顺序依次访问各个存储模块组(每个模块组编号依次为 M0、M1、M2 和 M3)。
②低位交叉编址则采用按组循环的方式进行存储单元访问。

探讨连续访问的情况:

在这里插入图片描述

and

在这里插入图片描述

高位交叉:花费nT
ps. 访问完都得等 这个存储体(存取周期) 恢复

在这里插入图片描述

考察:微观层面的时间开销的计算(例如,T+(n-1)*r)

在这里插入图片描述

宏观上:n—>∞

1. 高位交叉编址(顺序方式):

在这里插入图片描述

编址方式:高位地址字段用于标识'体号'这一属性信息,在低位地址字段中则记录了'体内 address'的位置信息。高 2 位二进制码负责区分不同存储体的访问权限,在实际应用中通常会按照特定的编码规则对这些位进行赋值以实现精确控制。所有连续内存位置都被组织在同一存储块中进行管理,在 CPU 运行过程中按顺序依次访问每个存储块内的所有有效地址位置;一旦当前存储块中的最后一个有效 address 被读取完毕,则系统会自动切换至下一个相邻的存储块继续处理 next set 的操作序列

如果存取时间远远小于存取周期,则会对存取效率造成显著影响(在对同一存储体进行存取时,必须等待上一次对该存储体存取周期的完成)。

假设访问存取周期为T,则每次操作所需时间为r;其总时间为**n \cdot T**(在每次操作完成后必须等待时间T才能开始下一个操作)

注意:

由于模块内的地址依次相连,在尽管有助于扩展容量的同时,并未改变其存取方式仍为串行模式这一事实。各模块无法同时访问这一限制导致这种存储器仍属于顺序存储器类型,并未能提升其吞吐率。
而多体低位交叉结构,则是典型的并行系统。

选择题 :高位四体交叉存储器可能在一个存储周期内连续访问4个模块(✔)解析:可能的,只是概率比较低。

2. 低位交叉编址(交叉编址方式):

在这里插入图片描述

编址方案采用低位编码标识"体号"、高位编码标识"体内位置"。其中最低两位用于区分不同存储体的访问。相邻内存块依次存放连续寻址信息,在处理连续寻址请求时能够有效提升数据传输效率(无需额外等待或减少寻址时间)。虽然在理想情况下这种设计能让主存储器带宽提升至原始值m倍水平。通过增加参数m值可进一步优化系统性能但必须注意到该系统设计因存在"冲突现象"而实际性能提升幅度无法达到理论最大值即加速比始终小于m

  • 这种方式相当于对存储单元矩阵按 优先的方式进行编址。

  • 该方法能够实现程序局部性的要求 ,其中只有采用低位交叉存储器时能够有效避免访问冲突问题 。这种设计充分保证了该系统的空间本地化特性 。而高位多体交叉存储器采用连续存放方式时无法满足这一技术要求 。

考点

考点

考点

考点

3)交叉存储器:用低位交叉编址(交叉方式)的存储器叫交叉存储器。

N体多模块交叉存储器。

  • 用“流水线”的方式并行存取,提高存储器的带宽。
在这里插入图片描述

①为何被称为"流水线":类似于工业生产线,在此架构下机器人如同高速运算核心(),而四个作业节点相对迟缓(),整体运行效率得以协调平衡。

确保流水线的不间断运行,并需满足存储器交叉模块数≥m(交叉存取比),其中m= T/r;则所需时间t为:t = T + (n - 1)r

确保流水线的不间断运行,并需满足存储器交叉模块数≥m(交叉存取比),其中m= T/r;则所需时间t为:t = T + (n - 1)r

③速度:每个字的读取时间接近r

在这里插入图片描述

(最佳m个:少了要等待存储体,多了要等待总线)

在这里插入图片描述

解题第一步/切入点👆
A1:低位体号 2进制直接判断 (首选/常用)
A2:10进制地址x %(取余)m

2.4.3本节小结

在这里插入图片描述

哈哈呢!hey呀!哈哈!~哈哎呀!~ hey!哈哈呢!heya!不考哦~
heya!哈哈呢!heya!哈哈呢!如果疯了那就是很快疯了啦~完全变态时间到啊~

在这里插入图片描述

现在是

在这里插入图片描述

体验到"不死就活着,死了就死了"这种感觉
mua的一章实在是太多了,王道书的内容同样丰富,单是每天学习一周量的话,反正那时候也差不多了
把网课和书籍整理了一遍,还得练习无数道题。。。
说实话,在自习室里真的让人很无奈啊
Thousands of years ago...
做完一道题,总结一下解题思路吧,有时候鸟儿会在外面叫着,等到天亮的时候再继续学习

在这里插入图片描述

不死是我的福报

活得很有意义,并非一帆风顺。纠结是否需要休息以及何时休息一直萦绕心间。
自午夜1点以来持续的耳鸣直至今晨消散,
最初以为可能是耳机漏电产生的共鸣,
而想要休息却是缓解这种困扰的重要方式。
不得不感叹:学习的道路永无止境,
主要矛盾在于如何实现"人民享有美好的学习成果"与"提升生产力"之间的平衡。

在这里插入图片描述

嘟嘟嘟嘟乌鲁乌鲁~楼下开始施工?不可思议的劳动人民!

军训的小朋友们出宿舍门咯!👍🌞
越不睡觉越不想睡觉wwwwww呜呜呜呜呜我

2.4.4 课后例题

3.7.一个类型题

在这里插入图片描述

解题过程如下:
32位相当于32bit除以8得到4B空间。
由于半字存储的原因,在内存中每个word占用的空间是其对应的双倍大小即为2B空间。

在这里插入图片描述

计算内存块时:64位相当于64bit除以每个字符占用的字节数得到的结果是每个字符占用的字节数。此外,在按字节编址的情况下, 每个地址占据的空间也是固定的大小.容量与单位之间的关系等于单个单元所承载的数据量.128MB等于( 2^{37} B)除以(每字符占用的 B)得到的结果是(单个单元所承载的数据量).这里假设每个字符占用的是固定 B值.在解题过程中首先要确认是否存在多余或不必要的 B标记, 并确保所有涉及的数据量都是合理的.

在这里插入图片描述

数据传输率=宽度/周期。
解题:16位即16bit=2B
ns=10^-9

2.5双端口RAM

双端口存储器能够实现对同一个存储区域的高效同步访问(✔)
即使双端口设备同时进行数据读写操作 也不会导致逻辑上的冲突(✔)

3主存储器与CPU的连接

芯片的基本结构

在这里插入图片描述

3.1连接原理

在这里插入图片描述

本章需要解决的两个问题:

  1. 增加主存的存储字长——位拓展
  2. 增加主存的存储字数——字拓展
在这里插入图片描述

.

在这里插入图片描述

(默写图)主存储器与CPU的连接

注意

  • 数据总线是双向的,地址总线是单向的
  • CPU集成了MAR和MDR
在这里插入图片描述

3.2主存容量的扩展

3.2.1位扩展法

在这里插入图片描述

数据总线宽度>存储芯片字长

扩展方式:采用多颗存储芯片的地址信号、片选信号及读写控制信号进行并行传输(即同时对所有芯片实施操作)。各个数据总线上分别输出(通过数据总线系统可实现各芯片的数据同步发送至中央处理器)。所有地址总线保持一致,并将各数据总线上独立分配以确保信息正确传递)。

上图中展示了将一片具有存储能力的芯片组进行了功能升级,在原有基础上实现了性能的显著提升。具体来说,在该系统中通过增加每一部分的处理能力(即从单比特处理升级至多比特并行处理),有效提升了整体系统的带宽和吞吐量,并且达到了总容量为8KB的效果

在这里插入图片描述
在这里插入图片描述

3.2.2字扩展法

在这里插入图片描述
在这里插入图片描述

采用多根地址线与数据线进行集成布线,并通过片选信号(经过译码处理)来选择特定存储芯片对应的地址范围。

在图示中,A0至A12位对应着低13位的内部地址.而位于高位区的两位,A即“A13-A- 以及由译码器电路决定,A- 和-两位信号用于选择特定芯片.具体来说,当输入信号- 和-均为低电平时,译码器的输出端子-处于有效状态,从而实现对芯片-数据的读取.

此时,A15无论输出什么都无效,只看A0 - A14

芯片1地址:00 0000 000000000 - 00 1111111111111

芯片2地址:01 0000 000000000 - 01 1111111111111

芯片3地址:10 0000 000000000 - 10 1111111111111

芯片4地址:11 0000 000000000 - 11 1111111111111

在这里插入图片描述
  1. 线选法
  2. 片选法(更优,现实使用)
在这里插入图片描述

3.2.3字位扩展法

在这里插入图片描述

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

3.3.1线选法

3.3.2片选法

3.4存储器和CPU的连接

D:“写出整个的设计过程,画出图来”

(对三个扩展法的小总结)

红框里考点

在这里插入图片描述

4.外部存储器(北科不考)

在这里插入图片描述

5.高速缓冲存储器(Cache) 【本章重中之重:大题小题高频考点】

在这里插入图片描述

持续提升主存速度即便如此依然无法缩小与CPU的速度差异。如果将DRAM更换为SRAM芯片存储器的成本将会上升/在相同成本下存储容量将会减少。

5.1 程序访问的局部性原理【常考:简答题:是什么?】

是什么?

基于空间局部性原理可知,在程序运行过程中,预计被访问的数据项很可能与当前正在处理的数据项在内存布局中具有邻近性。
例如,在实际编程中,
eg.数组元素通过
**顺序**
执行的代码指令可以看出这一规律。

时空局部性原理表明,在未来的操作中使用的数据与当前操作中的数据可能存在相同之处。例如,在循环结构的指令序列中应用这一原理能够提高效率。

在这里插入图片描述

如何评判一个程序空间局部性好坏?
——访问顺序和采访顺序 是否一致?

在这里插入图片描述

依据局部性原理,在CPU当前访问地址的基础上,“邻近区域”的数据可通过缓存机制实现快速加载。如何确定这些区域的具体边界?

在这里插入图片描述

结论:

  1. 程序A在空间局部性方面表现优于程序B。
  2. 每个数组中的每个元素仅被访问一次,则其时间局部性表现不佳。
在这里插入图片描述

这个程序段 既有时间局部性、又满足空间局部性:

重复运用操作:将变量赋值为1 → 遵循时间局部性原则;
重复运用操作:将当前变量赋值给数组元素a[j] → 遵循空间局部性原则;

↑意义↓: 局部性原理是设置Cache高速缓冲的理论基础

5.2cache的基本工作原理

为提升系统性能,我们设置了高速缓冲存储器Cache。将主存中被频繁使用的数据存储于其中。从而使得CPU的访存操作主要集中在Cache上,并显著提升了系统的运行效率。

。/

ps. 用户角度示意图

实现Cache时需要解决以下关键问题:

  1. 数据查找:如何高效判断数据是否存在于Cache中。
  2. 地址映射:主存块如何通过Cache地址进行存储及主存地址转换。
  3. 替换策略:Cache满载后采用何种替换策略以实现块淘汰。
  4. 写入策略:如何既确保主存储块与Cache块的数据一致性又最大限度提升效率。
在这里插入图片描述

5.2.1 工作原理

在这里插入图片描述
  • Cache由SRAM实现(基于非破坏性读出技术)。
  • Cache块亦称作Cache行,在此系统中被定义为一块存储单元;其长度则被称为Block Length或Cache Line Length。
  • 由于Cache容量显著少于主存容量——例如4MB至16MB之间——系统仅存储主存中最活跃的部分副本以节省空间。

两种方式:

  1. 工作原理:先访问Cache再访问主存的方式
    Cache按照某种策略,预测CPU在未来一段时间内欲访存的数据,将其装入Cache。过程全由硬件完成。
    步骤:
    ①CPU发出请求,如果命中:将此地址转换成Cache地址,直接对Cache进行读操作,与主存无关。
    ②如果不命中,则需访问主存,将字所在的一块 从主存调入Cache。如果Cache已满,则需根据某种替换算法(即“5.4Cache中主存块的替换算法”),用这个块替换Cache中原来的某块信息。

另一种常用工作原理:同时访问Cache和内存的方式

在这里插入图片描述

注意事项:

  1. CPU与Cache之间进行的数据传输采用字作为单位;2. Cache与主存之间进行的数据传输采用Cache块作为单位

计算题:
1° 采用"先访Cache后访主存"的策略,在引入缓存前相比下,在内存缓存策略上提升了多少倍?
2° "以先访Cache为策略" / "并行采用了'先访Cache'与'同时访存'"

(默写图)Cache的基本结构/高速缓冲存储器的工作原理

5.2.2 性能分析

Cache命中:访存地址在Cache中的%
对应指标↓

  1. 命中率H :CPU欲访问的信息已经在Cache中的比率。
  2. 平均访问时间T
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

小结:

在这里插入图片描述

5.3Cache与主存的映射方式 【非常重要,重中之重,常见复试中】

3种地址映射方法:【定义+地址结构+区别】

前提知要:

  • Cache行中的数据是主存中某个块的复制
  • 地址映射即为主存地址空间对应Cache地址空间的过程,在此过程中将储存在主存中的信息按照特定规则放入Cache中
在这里插入图片描述
  • 每个Cache块增加一个标记:记录对应的主存块号
  • 有效位:0无效,1有效位

在缓存设计中,为什么要引入映射机制?

在这里插入图片描述
  • 先找块号,再找第几个字
  • 块内地址都是b位,能表示2^b个字
  • 2 ^ m >> 2 ^ c,远大于

映射的实质:

在这里插入图片描述


带着思考开始介绍映射方法啦 ♪( ^ ∇ ^ *)

5.3.1 直接映射

  1. 概念原理:每个主存块只能被安置于一个特定的位置。
  2. 映射关系定义方式:Cache块号等于主存块号除以Cache总块数后的余数。
  3. 地址结构构成:地址由标记连接Cache行号和块内地址组成。
  4. 特点性质:支持随机化存放以及可定制化处理。
  5. 优点属性描述: 优点在于对于任意一个地址仅需比较其一"标记"即可实现快速定位。
  6. 缺点列举: 块冲突发生的几率较大导致Cache存储空间利用率不足且命中率较低。
在这里插入图片描述

地址结构:
——对访存地址的解读指南ヾ(•ω•`)o
标记+Cache行号+块内地址

在这里插入图片描述
  • 标志位(t位):主存的行号的前t位
在这里插入图片描述

**标记的功能:**当t个位相同且缓存行的最低有效位为1时,则表示该缓存行即来自主存地址或是副本。

分析:CPU给了一个访存地址,即主存地址

基础例题1
暗含:该计算机按字节编址1B

在这里插入图片描述

cache容量16kb=2^4 kb=2 ^14b ——>cache地址14位

在这里插入图片描述

注意查看右边的缓存块地址构成等于缓存块编号加上缓存块内地址的 14 位数值之和

基础例题2

在这里插入图片描述

分析:求取第几字块的位置等价于确定 cache 行号

主存部分:

  1. 1MB=2^20B,该计算机按字节编址1B,所以主存地址总位数20位。cache14位,故最高位(标记位)6位

做题:
将主存地址“35301H”转换为2进制,看中间9位,看出cache行号。

在这里插入图片描述
在这里插入图片描述

如图所示,在Cache中存放着8个存储单元(Block),每个单元均采用3位二进制数来进行编码标识。进而可知,在主存中某个存储单元的末尾三位编码数值能够精确地对应到其在Cache中的具体位置(即唯一确定对应的Cache存储单元位置),这种设计使得查询效率最高;然而由于这种设计导致Cache的整体利用率较低(效果不佳),当某个存储单元的数据被更新时应立即完成替换操作;另外需要注意的是,在某些情况下可以通过设置标记位来消除末尾三位编码的空间需求(即只需19位空间即可实现此功能)

②首先通过主存块号的最后三位二进制数来确定该主存块位于Cache中的位置。接着,在该位置上对照其标记号,并检查有效性字段是否为1

5.3.2 全相联映射

在这里插入图片描述
  1. 概念方面:主存块的位置具有极大的灵活性。
  2. 映射关系定义方面:Cache行号等于主存块号与Cache总行数取模的结果。
  3. 地址结构方面:通过附加标记字段与块内部地址字段组合表示地址。
  4. 特点方面:允许任意放置,并支持用户根据需求进行定制化放置策略。
  5. 优点方面:充分提升了缓存利用率的同时显著提升了命中率。
  6. 缺点方面:查找操作可能需要遍历所有缓存行进行比较以确定是否存在匹配的标记。
  • Cache行数/块数 大小 = 主存块数 大小
在这里插入图片描述

主存中的块在进入CACHE时可能存储于任何位置(Cache的空间利用率较高),然而由于必须检查所有块的标记以确定其有效性这一过程较为缓慢),其中的有效位置为1位(标记位表示该块在主存中的具体块号)。

在查询CACHE实施匹配操作时,不仅需要完成标记位的匹配任务,还必须确保有效位等于1.

Ⅰ标记位匹配成功且有效位为1,则访问该CACHE块的块内地址

Ⅱ标记位匹配失败或有效位为0,则访问主存中相应块号的块内地址

5.3.3 组相联映射

在这里插入图片描述
  1. 概念:Cache块被划分为多个分组,并且任何主存块均可被放置在所属分组的任一位置。

  2. 映射关系定义:任何主存块的地址将映射到对应的Cache小组中。
    ps. group count = cache group number (last two binary digits)

  3. 地址结构由标记、组号及块内地址构成。

  4. 术语为n-way group-mapped mapping,即每n次Cache操作被归为一组。

  5. 该方案通过权衡综合考量了其他两种方式的优势,整体效能表现优异。

在这里插入图片描述

如图所示,在Cache中设置了4组,并且可用两位二进制位来表示每个主存块的位置信息。因此,在确定主存块号时取其最低两位就可以唯一确定该主存块所属的Cache组别;此外地,在标记位不存在的情况下,则可省略最后两位(综合考虑前两种映射策略的优势后发现整体效果更为理想)。同时地,在标记位不存在的情况下,则可省略最后两位(综合考虑前两种映射策略的优势后发现整体效果更为理想)。

首先通过分析主存块编号的最后两位数字来计算得出具体的组别编号。接着逐一核对各块记录是否与前二十个记录相符,并且确保对应的有效标志位都处于启用状态。

③m路组相联映射:Cache中每组有m个块

在这里插入图片描述

例题

在这里插入图片描述

主存部分:
主存块容量为32B等于2的五次方
因为采用按字节编址的方式(即每个字节占1B),因此每个块内部所需的地址码有5位二进制数来表示。
此外,在配置时需要将内存划分为多个小组件(group)。具体来说:

  • 将内存划分为64行/4路的结果是等同于分成16组
  • 每个小组件包含编号为四位二进制数的地址空间
  • 每个小组件占用四位地址位

做题:
“2593”化为二进制,去掉后5位,取后四位(组号)

在这里插入图片描述

口诀总结

口诀总结

口诀总结


要求掌握(会出什么题)

在这里插入图片描述

5.4Cache中主存块的替换算法 【重要但不难】

复习:Cache与主存的3种映射方式

  1. 全面关联映射——任何位置
  2. 单一映射——明确指定的位置
  3. 分组相关联映射——Cache分组
在这里插入图片描述

何时需要替换算法?
——满了,把可能不需要的替换掉

在全相关联映射中, 仅当全部填满时才需进行替换, 并需在全局范围内确定替换的具体区域, 因此必须采用相应的替换算法

在直接映射机制下,每个主存块对应唯一的Cache位置。当对应Cache位置已存在时,则会立即被新数据替代而无需采用任何替换策略

在组相关联映射的过程中,在各分组内部已满时才需进行替换操作;为确保数据完整性,在分组内部需根据具体情况决定替换策略;应采用相应的替换算法以保证数据一致性

以全相联映射-介绍四种替换算法:(手算做题)

在这里插入图片描述

注意英文缩写

RAND算法——当Cache已满容量时,在所有数据块中随机选取一个进行替换。
FIFO算法——当Cache已满容量时,在所有已被加载到缓存中的数据块中选择第一个进入缓存的数据块进行替换。
LRU算法——为每个Data Cache设置一个计数器用于记录该数据块未被访问的时间长度。当需要更换数据Block时,在整个Data Cache队列中找到未被访问时间最长的一个Block并将其移除。

5.4.1 随机算法(RAND)

在这里插入图片描述

cache命中率可能会很低。

5.4.2 先进先出算法(FIFO)

在这里插入图片描述

也不科学,“抖动”现象:刚被替换、又被调用。

5.4.3 近期最少使用(LRU)

手动计算:

在这里插入图片描述

硬件实现角度:

在这里插入图片描述

当某个计数值达到(2^n - 1)时,则无需执行加一操作。而其余计数值仍可正常递增。因为当3执行加一操作后变为4……这并不会影响排序结果的一致性。但这种额外的空间需求对于本系统来说是不必要的。

LRU考虑到了局部性原理

若频繁访问的主存块数量 > Cache的块数,仍然可能发生抖动

计数器仅需n位(n层Cache层)

在这里插入图片描述

计数器 的逻辑:

在这里插入图片描述

计数器的变化规则:

使得:

  1. 最近访问过的-计数器=0
  2. 越久没访问过的越大

### 5.4.4 最近不经常使用(LFU)

在这里插入图片描述

cache命中率也不好。

小结:LRU最常考,效率最好(Cache命中率最高)

在这里插入图片描述

5.5Cache写策略 【记名词就行,记搭配和定义】

目的是解决数据一致性问题。 cache通常作为主存的一个副本被复制出来。 当CPU对缓存内容进行了修改(即缓存内容发生变化)时,请问如何保证主存中的母体一致性?

在这里插入图片描述

CPU负责修改副本。如果我在缓存中找到了——Cache写命中——发生了,则有以下两种解决方案👇

  1. 写命中(写的地址可以命中的情况下)

①直接通路法 (Write-through):当CPU实现Write-Miss时(即发生Write-Miss事件),必须同时将数据传输到缓存层和主存中以确保两者信息的一致性。

在这里插入图片描述
在这里插入图片描述

优点: 这种方法保持内容的一致性,但是会增加访存次数。

缺点: 速度不匹配问题,写Cache速度远大于写主存

优化策略: 常见采用的是 write buffer,在现代处理器中被广泛应用于缓存机制中的一种高效的数据缓存结构。基于SRAM架构设计的一种高效的数据缓存机制能够有效管理存储资源并保障系统性能需求。然而这种优化方式能够在一定程度上提升数据的一致性保障能力,并通过合理的队列管理实现存储请求的有序处理。在实际应用中发现当存储访问频率提升后运行效率有所下降但这种权衡 trade-off 在大多数场景下是能够被接受并带来系统性能上的显著提升的

在这里插入图片描述
在这里插入图片描述

作用 :能够缓解主存和CPU的速度差异。
缺点: 如果写的太频繁了,可能会出现队列(write buffer)的饱和溢出。
———————————————————————
②回写法 (write-back):当CPU对Cache写命中时,只把数据写入Cache,而不立即写入主存。只有当这个块要被替换出来了,我才往主存写。

优点:

新问题:

解决方法:

仅会对Cache中的内容进行修改;当该块从缓存区被替换回主存时才会将其写入主存;从而使得同一缓存块所在的Cache与主存在内容上的不一致;因此必须引入一个'脏位'字段来标识该缓存块在Cache中是否发生过修改。

在这里插入图片描述

优点: 降低了内存访问频率(无需每次对主存的内容进行修改)。
缺点: 存在数据一致性上的潜在问题。

回映方法-常见考法:是什么原因?
Q: Cache单元格中有多少位?
因为加了一个位-脏位之后, 所以 Cache单元格的数量增加了。

  1. 写不命中

CPU试图修改一个副本时发现如果我在缓存中找不到该副本会导致缓存写入失败即出现"Cache Write Miss"这种情况存在两种优化途径

在这里插入图片描述
在这里插入图片描述

① write-throughout allocation:当Write操作不命中缓存时, 先将该数据块加载至Cache, 然后配合Write-back方法(在Cache中进行更新)。

②非写分配法 (not-write-allocate)是一种用于处理Write Miss情况的方法,在这种情况下(即发生Write Miss时),CPU不会将主存块加载到Cache中;只有在读取操作时才会进行加载,并且这种策略通常与全Write策略配合使用以实现内存管理目标。

对于Cache写命中(Write hit)有两种处理方法:

  1. 全写法
  2. 回写法

对于CacheA写不命中(White-back)有两种处理方法:

  1. 写分配法
  2. 非写分配法

现代计算机中的多级缓存系统中,指令缓存和数据缓存通常在L1级别分开存储。

课后题12.??

在这里插入图片描述

"全相联映射关系中" ,地址组成由标志字段与内部地址字段之和构成。
"在主存储器中一块内存区域占据" 4字节空间(即二的平方),其中二分之一用于标记位。
"通过计算可得缓存行大小为" 4千字节。

课后题22.

在这里插入图片描述

分析:确定缓存行所需的位数

数据区 VS. 行

数据区 VS. 行

在这里插入图片描述

所以意味着“cache行号”有10位。
“组内地址”有5位
所以“标志位”=32-5-10=17位。bit

做题:
cache行=data(32B=32*8bit)+标志位(17)+有效位(1)+脏位(1)=275

5.4.1.随机算法(RAND)

5.4.2.先进先出算法(FIFO)

5.4.3.近期最少使用算法(LRU)

5.4.4.最不经常使用算法(LFU)

5.5Cache写策略

6.虚拟存储器【不考,只有一个J】

6.1虚拟存储器与Cache的比较【简答题】

相同之处:


不同之处:



  1. 涉及手写笔记的网课截图是来自up主Beokayy_,
在这里插入图片描述

包含三集的是《干掉存储器计划》

  1. 408网课截图是来自B站王道官方咸鱼学长讲解视频. ↩︎

全部评论 (0)

还没有任何评论哟~