计算机组成原理的学习笔记(7)-- 存储器·其二 容量扩展/多模块存储系统/外存/Cache/虚拟存储器

学习笔记

前言

本文主要是对于b站尚硅谷计算机组成原理的学习笔记,仅用于学习交流。

容量拓展

1. 字扩展

字扩展中,两个芯片的数据线是完全并联的,因此存储器的"字长"(即数据线的位数)不会增加。其逻辑如下:

  1. 地址线分配:

    • 低位地址线(如 A0~A9)连接到每个芯片的地址引脚,用于访问单个芯片的存储单元。

    • 高位地址线(如 A10)用于控制每个芯片的片选信号(CS)。

  2. 存储单元的扩展:

    • 容量变为两倍。

    • 数据宽度(字长)保持为4位,因为数据线没有增加。

  3. 逻辑控制:

    • 系统根据高位地址信号,控制具体哪个芯片处于工作状态(每次只有一个芯片被选中)。

2. 位扩展

以两个1K×4的存储器通过位扩展组成一个1K×8的存储器为例:

  1. 地址线并联

    • 两个芯片的地址线完全相同,即系统的地址信号同时传递到每个芯片,所有芯片的地址空间是重叠的。

    • 如果有10根地址线(A0~A9),每个芯片都响应这10根地址线。

  2. 数据线分配

    • 两个芯片的数据线不重叠,而是分别连接到系统数据总线的不同部分。

    • 例如:

      • 第一个芯片的4条数据线(D0~D3)连接到系统数据总线的低4位。

      • 第二个芯片的4条数据线(D4~D7)连接到系统数据总线的高4位。

    • 这样,每个地址单元的数据宽度从4位变为8位。

  3. 控制线共享

    • 两个芯片的读写控制信号(如 /WE 和 /OE)完全共享。系统对一个地址的读写操作会同时作用于所有芯片。

3. 位扩展与字扩展的对比

特性 字扩展 位扩展
数据位宽变化 不变 增加
地址空间变化 增加 不变
存储单元数量 增加 不变
数据线分配 全部并联 分别连接到不同的部分
地址线分配 低位地址线并联,高位地址线用于片选 完全并联
控制信号 片选信号区别不同芯片 所有芯片共享相同信号

多模块存储系统

  • 多模块存储系统是一种并行存储体系结构,通过将数据分散到多个存储模块中并行访问,提高存储器的带宽和访问效率。

  • 与单体存储器不同,多模块存储系统可以在一个存储周期内同时访问多个地址的数据。


1. 特点

  • 存储器被划分为多个存储模块,每个模块可以独立访问数据。

  • 多个模块之间协同工作,CPU可以同时读取或写入多个地址。

  • CPU无需等待单个存储模块完成数据访问,从而减少存储访问延迟。


2. 地址分配方式

为了实现并行访问,需要合理分配地址到多个存储模块。常见的分配方式有以下两种:

  1. 高位交叉

    • 地址空间按照模块编号顺序分配。

    • 例如:

      • 存储模块1:地址 0~3

      • 存储模块2:地址 4~7

    • 优点:逻辑简单。

    • 缺点:可能导致并行性不足。例如,访问地址 0~3 会集中在存储模块1,其他模块闲置。

  2. 低位交叉分配(Interleaved Addressing):

    • 地址的低位决定存储模块编号,高位表示模块内地址。

    • 例如:

      • 地址 0, 4, 8 分配到存储模块1。

      • 地址 1, 5, 9 分配到存储模块2。

      • 简单来说就是地址最后几位相同(地址取模)的分在一个模块中

    • 优点:大大提高了访问的并行性。


3. 实例对比

假设CPU需要访问连续的8个存储地址:

  1. 单体存储器

    • 每次只能访问1个地址。

    • 如果存储周期为1,则需要8个周期完成。

  2. 多模块并行存储器(4个存储模块)

    • 地址 0, 4, 8 分配到存储模块1,1, 5, 9 分配到存储模块2,依此类推。

    • 在1个周期内可以并行访问4个地址。

    • 总时间为 2个周期,效率理论上提高了4倍。


4. 其他值得注意的点

  • 当模块分时启动的时间间隔 <= 总线传输周期,此时可以取得的存储器带宽最大(我姑且先理解为效率最大了)

  • SDRAM可以实现在CPU需要等待存储器读取操作的时候让CPU去干其他的,待读取操作完毕,直接得到数据就行。


外部存储器

  • 定义:与计算机系统分开的存储设备,用于扩展存储容量或备份数据。

  • 性能指标:道密度/位密度/存储容量/平均寻址时间/数据传输率

  • 常见外部存储器

    • 移动硬盘

    • U盘

    • SD卡

    • 光盘(CD/DVD)

    • 网络存储(NAS)

RAID和SSD

  • 定义:将多个SSD组合以实现数据冗余和性能提升的技术。

  • 常见RAID级别:

    • RAID 0:数据条带化,提供高性能,但没有冗余,任何一块硬盘故障都将导致数据丢失。

    • RAID 1:数据镜像,每块硬盘均保存相同的数据,提供冗余,能够在一块硬盘故障的情况下继续工作,但存储效率较低(可用容量为总容量的一半)。

    • RAID 2:利用汉明码实现错误检测和修正,实际应用较少,通常不被广泛使用。

    • RAID 3:数据条带化且使用一块专用的奇偶校验盘,适合大型文件的存储。

    • RAID 4:类似于 RAID 3,但数据条带化是基于块而非字节,使用专用奇偶校验盘。

    • RAID 5:数据分布在多个硬盘上,并且每个硬盘上都有奇偶校验信息,能够承受一块硬盘故障,兼具高性能和冗余。

    • RAID 6:类似于 RAID 5,但提供双重奇偶校验,能够承受两块硬盘同时故障,更高的安全性。

    • RAID 10(RAID 1+0):结合 RAID 1 和 RAID 0,提供高性能和冗余,但需要至少四块硬盘。

高速缓冲存储器(Cache)

  • 性质:缓存是位于主存与CPU之间的存储器,速度比主存更快,但容量通常较小。

  • 功能:缓存通过存储近期使用的数据或即将使用的数据,加快数据访问,使系统能够更高效地工作。

  • 命中率

1. 缓存管理

  • 直接映射:每个主存地址映射到缓存的特定位置。

  • 全相联映射:主存的任意块可存放在缓存的任意位置,提高灵活性。

  • 组相联映射:前两者相结合, 缓存分为多个组,每组可以存放多个块, 减少冲突。

2. 替换算法

  • 最少使用(LRU):根据最近最少使用原则替换数据。

  • 先进先出(FIFO):最早进入缓存的数据最先被移除。

  • 最不常用(LFU):基于访问频率进行替换。

  • 随机替换(RAND):随机选择缓存中的一项进行替换。

3. 写策略

  • 写直达(Write-Through)

    • 数据同时写入缓存和主存,确保数据一致性。

    • 优点:数据一致性高,适合对数据安全性要求高的场景。

    • 缺点:性能较低。

  • 写回(Write-Back)

    • 数据写入缓存,只有在替换时才写入主存。

    • 优点:提高性能,适合频繁写入的数据场景。

    • 缺点:数据可能丢失,需处理数据一致性问题。


虚拟存储器

  • 定义:虚拟存储器是一种内存管理技术,允许计算机系统使用硬盘或其他外存作为扩展内存,从而实现比实际物理内存更大的有效内存容量。

  • 工作原理

    • 将程序的逻辑地址空间划分为逻辑段和页。

    • 使用段表和页表进行地址转换。

1. 快表

  • 定义 :快表是一种用于管理缓存存储的数据结构,记录缓存的状态以提高数据访问的效率(相当于慢表的cache)。

  • 结构组成

    • 索引:定位缓存条目的关键字段。

    • 标签(Tag):缓存条目的标识,帮助区分不同数据。

    • 状态位:指示缓存条目的有效性、脏数据状态等

2. 段页式虚拟存储器

  • 基本概念

    • :程序的逻辑地址空间被划分为多个段,每个段可能具有不同的大小(例如,代码段、数据段、堆栈段)。

    • :段内部进一步被划分为固定大小的页。

  • 地址转换机制

    • 逻辑地址:由段号、页号和页内偏移组成。

    • 段表:记录每个段的基础地址和长度。

    • 页表:每个段都有对应的页表,用于映射段内虚拟页到物理页框。


结语

学到关于"命中/未命中"这一部分,死去的记忆突然袭击我了,这不就是CSP的大模拟那道题吗,唉唉,真是令人感慨万千,多亏了当时那道题,令我现在理解起来很轻松~

感觉学到现在还是没有太多实感,但也只能一步一个脚印走了。。

相关推荐
LK_073 小时前
【Open3D】Ch.3:顶点法向量估计 | Python
开发语言·笔记·python
饮浊酒3 小时前
Python学习-----小游戏之人生重开模拟器(普通版)
python·学习·游戏程序
li星野3 小时前
打工人日报#20251011
笔记·程序人生·fpga开发·学习方法
摇滚侠4 小时前
Spring Boot 3零基础教程,yml配置文件,笔记13
spring boot·redis·笔记
QT 小鲜肉4 小时前
【个人成长笔记】在Ubuntu中的Linux系统安装 anaconda 及其相关终端命令行
linux·笔记·深度学习·学习·ubuntu·学习方法
QT 小鲜肉4 小时前
【个人成长笔记】在Ubuntu中的Linux系统安装实验室WIFI驱动安装(Driver for Linux RTL8188GU)
linux·笔记·学习·ubuntu·学习方法
急急黄豆4 小时前
MADDPG学习笔记
笔记·学习
BullSmall4 小时前
《道德经》第十七章
学习
Chloeis Syntax4 小时前
栈和队列笔记2025-10-12
java·数据结构·笔记·
知识分享小能手5 小时前
微信小程序入门学习教程,从入门到精通,项目实战:美妆商城小程序 —— 知识点详解与案例代码 (18)
前端·学习·react.js·微信小程序·小程序·vue·前端技术