导图社区 第三章 存储系统
这是一篇关于408考研,期末考试,计算机组成原理存储系统思维导图,专为计算机专业学生、考研 / 软考备考者、计算机基础课程学习者打造,是系统梳理存储系统核心知识的高效学习工具。思维导图的结构化呈现方式,将存储器概述、主存储器组成、半导体随机存储器、主存与 CPU 的连接、双端口 RAM 与多模块存储器、高速缓冲存储器、虚拟存储器、外部存储器八大核心模块拆解为层级清晰、逻辑连贯的分支框架,同时融入关键原理示意图、地址转换流程,帮助使用者快速构建存储系统的知识体系,精准攻克 Cache、虚拟存储等重难点与高频考点。对于计算机专业学生与考研 / 软考备考者而言,这份思维导图模板可直接用于课堂笔记整理、期末复习、考点梳理,将存储器分类、SRAM/DRAM 原理、主存扩展、Cache 映射算法、虚拟存储器地址转换等零散知识点系统化,降低理解与记忆难度,提升备考效率;对于计算机基础课程学习者,模板清晰呈现了存储系统的层次结构、硬件实现与性能优化逻辑,可用于入门学习、知识框架搭建,快速建立对计算机存储体系的整体认知。模板完整覆盖存储系统核心考点:从存储器的性能指标与分类,到主存的基本组成与半导体存储器原理;从主存与 CPU 的连接方式、存储扩展技术,到 Cache 的工作原理、映射算法与替换策略;再到虚拟存储器的页式 / 段式 / 段页式管理、地址转换流程与 TLB 机制,均以思维导图形式清晰呈现,层级分明,便于快速查阅、重点标记与按需编辑修改,适配备考笔记、课程复习提纲、学习课件等多种场景。
编辑于2026-05-07 15:54:33这是一篇关于408考研,期末考试,计算机组成原理,输入输出系统思维导图,专为计算机专业学生、考研(如 408 统考)/ 软考备考者、计算机硬件底层原理学习者打造,是系统梳理 I/O 系统核心知识的高效学习工具。思维导图的结构化呈现方式,将 I/O 系统的基本概念、I/O 接口、I/O 控制方式、中断处理流程四大核心模块拆解为层级清晰、逻辑连贯的分支框架,同时融入高频考点标注、原理示意图与对比表格,帮助使用者快速构建输入 / 输出系统的知识体系,精准攻克 I/O 控制方式对比、DMA 传输原理、中断处理流程、磁盘调度算法等重难点与高频考点。对于计算机专业学生与考研 / 软考备考者而言,这份思维导图模板可直接用于课堂笔记整理、期末复习、考点梳理,将 I/O 接口的软硬件构成、程序查询 / 中断 / DMA 控制方式的差异、中断响应与处理全过程、磁盘调度计算等零散知识点系统化,降低理解与记忆难度,提升备考效率;对于计算机底层原理学习者,模板清晰呈现了主机与外设数据交互的完整逻辑,可用于入门学习、硬件原理学习的知识框架搭建,快速建立对计算机输入输出系统的整体认知。模板完整覆盖输入 / 输出系统核心考点:从 I/O 系统的基本概念、接口的分类与工作原理,到程序查询、中断、DMA 三种核心 I/O 控制方式的对比;从中断响应与完整处理流程,到磁盘调度算法、DMA 传输原理等计算类高频考点,均以思维导图形式清晰呈现,层级分明,便于快速查阅、重点标记与按需编辑修改,适配备考笔记、课程复习提纲、学习课件等多种场景。该模板借助万兴脑图软件绘制,助力计算机学习者高效掌握输入 / 输出系统核心知识。
这是一篇关于408考研,期末考试,计算机组成原理,总线的思维导图,专为计算机专业学生、考研 / 软考备考者、计算机底层原理学习者打造,是系统梳理总线系统核心知识的高效学习工具。思维导图的结构化呈现方式,将总线概述、总线仲裁、总线操作和定时、总线标准四大核心模块拆解为层级清晰、逻辑连贯的分支框架,同时融入关键原理示意图、性能计算要点与对比说明,帮助使用者快速构建总线系统的知识体系,精准攻克总线分类、仲裁方式、传输定时与性能分析等重难点与高频考点。对于计算机专业学生与考研 / 软考备考者而言,这份思维导图模板可直接用于课堂笔记整理、期末复习、考点梳理,将总线的特性与分类、集中式 / 分布式仲裁方式、同步 / 异步传输定时、总线性能指标计算等零散知识点系统化,降低理解与记忆难度,提升备考效率;对于计算机底层原理学习者,模板清晰呈现了计算机系统中各部件通过总线进行数据传输的完整逻辑,可用于入门学习、硬件原理学习的知识框架搭建,快速建立对计算机系统互连机制的整体认知。模板完整覆盖总线系统核心考点:从总线的基本概念、分类与特性,到总线仲裁的集中式与分布式实现;从总线操作的同步 / 异步 / 半同步定时方式,到总线标准与性能指标计算,均以思维导图形式清晰呈现,层级分明,便于快速查阅、重点标记与按需编辑修改,适配备考笔记、课程复习提纲、学习课件等多种场景。
这是一篇关于408考研,期末考试,计算机组成原理,中央处理器的思维导图,专为计算机专业学生、考研 / 软考备考者、计算机底层原理学习者打造,是系统梳理 CPU 核心知识的高效学习工具。思维导图的结构化呈现方式,将 CPU 的功能和基本结构、指令执行过程、数据通路、控制器、指令流水线、多处理器系统六大核心模块拆解为层级清晰、逻辑连贯的分支框架,同时融入高频考点标注、关键概念对比与计算要点,帮助使用者快速构建 CPU 工作原理的知识体系,精准攻克数据通路设计、流水线性能分析、中断处理流程等重难点与高频考点。对于计算机专业学生与考研 / 软考备考者而言,这份思维导图模板可直接用于课堂笔记整理、期末复习、考点梳理,将 CPU 结构、指令执行周期、数据通路设计、硬布线 / 微程序控制器对比、流水线冲突处理、多处理器系统分类等零散知识点系统化,降低理解与记忆难度,提升备考效率;对于计算机底层原理学习者,模板清晰呈现了 CPU 从指令取指到执行的完整工作流程,可用于入门学习、底层原理学习的知识框架搭建,快速建立对计算机核心部件的整体认知。模板完整覆盖中央处理器核心考点:从 CPU 的功能与基本结构、指令执行的完整过程,到数据通路的设计原理与分类;从硬布线与微程序控制器的工作原理与对比,到指令流水线的性能指标、冲突处理与多发技术;再到多处理器系统的基本概念与硬件多线程技术,均以思维导图形式清晰呈现,层级分明,便于快速查阅、重点标记与按需编辑修改,适配备考笔记、课程复习提纲、学习课件等多种场景。
社区模板帮助中心,点此进入>>
这是一篇关于408考研,期末考试,计算机组成原理,输入输出系统思维导图,专为计算机专业学生、考研(如 408 统考)/ 软考备考者、计算机硬件底层原理学习者打造,是系统梳理 I/O 系统核心知识的高效学习工具。思维导图的结构化呈现方式,将 I/O 系统的基本概念、I/O 接口、I/O 控制方式、中断处理流程四大核心模块拆解为层级清晰、逻辑连贯的分支框架,同时融入高频考点标注、原理示意图与对比表格,帮助使用者快速构建输入 / 输出系统的知识体系,精准攻克 I/O 控制方式对比、DMA 传输原理、中断处理流程、磁盘调度算法等重难点与高频考点。对于计算机专业学生与考研 / 软考备考者而言,这份思维导图模板可直接用于课堂笔记整理、期末复习、考点梳理,将 I/O 接口的软硬件构成、程序查询 / 中断 / DMA 控制方式的差异、中断响应与处理全过程、磁盘调度计算等零散知识点系统化,降低理解与记忆难度,提升备考效率;对于计算机底层原理学习者,模板清晰呈现了主机与外设数据交互的完整逻辑,可用于入门学习、硬件原理学习的知识框架搭建,快速建立对计算机输入输出系统的整体认知。模板完整覆盖输入 / 输出系统核心考点:从 I/O 系统的基本概念、接口的分类与工作原理,到程序查询、中断、DMA 三种核心 I/O 控制方式的对比;从中断响应与完整处理流程,到磁盘调度算法、DMA 传输原理等计算类高频考点,均以思维导图形式清晰呈现,层级分明,便于快速查阅、重点标记与按需编辑修改,适配备考笔记、课程复习提纲、学习课件等多种场景。该模板借助万兴脑图软件绘制,助力计算机学习者高效掌握输入 / 输出系统核心知识。
这是一篇关于408考研,期末考试,计算机组成原理,总线的思维导图,专为计算机专业学生、考研 / 软考备考者、计算机底层原理学习者打造,是系统梳理总线系统核心知识的高效学习工具。思维导图的结构化呈现方式,将总线概述、总线仲裁、总线操作和定时、总线标准四大核心模块拆解为层级清晰、逻辑连贯的分支框架,同时融入关键原理示意图、性能计算要点与对比说明,帮助使用者快速构建总线系统的知识体系,精准攻克总线分类、仲裁方式、传输定时与性能分析等重难点与高频考点。对于计算机专业学生与考研 / 软考备考者而言,这份思维导图模板可直接用于课堂笔记整理、期末复习、考点梳理,将总线的特性与分类、集中式 / 分布式仲裁方式、同步 / 异步传输定时、总线性能指标计算等零散知识点系统化,降低理解与记忆难度,提升备考效率;对于计算机底层原理学习者,模板清晰呈现了计算机系统中各部件通过总线进行数据传输的完整逻辑,可用于入门学习、硬件原理学习的知识框架搭建,快速建立对计算机系统互连机制的整体认知。模板完整覆盖总线系统核心考点:从总线的基本概念、分类与特性,到总线仲裁的集中式与分布式实现;从总线操作的同步 / 异步 / 半同步定时方式,到总线标准与性能指标计算,均以思维导图形式清晰呈现,层级分明,便于快速查阅、重点标记与按需编辑修改,适配备考笔记、课程复习提纲、学习课件等多种场景。
这是一篇关于408考研,期末考试,计算机组成原理,中央处理器的思维导图,专为计算机专业学生、考研 / 软考备考者、计算机底层原理学习者打造,是系统梳理 CPU 核心知识的高效学习工具。思维导图的结构化呈现方式,将 CPU 的功能和基本结构、指令执行过程、数据通路、控制器、指令流水线、多处理器系统六大核心模块拆解为层级清晰、逻辑连贯的分支框架,同时融入高频考点标注、关键概念对比与计算要点,帮助使用者快速构建 CPU 工作原理的知识体系,精准攻克数据通路设计、流水线性能分析、中断处理流程等重难点与高频考点。对于计算机专业学生与考研 / 软考备考者而言,这份思维导图模板可直接用于课堂笔记整理、期末复习、考点梳理,将 CPU 结构、指令执行周期、数据通路设计、硬布线 / 微程序控制器对比、流水线冲突处理、多处理器系统分类等零散知识点系统化,降低理解与记忆难度,提升备考效率;对于计算机底层原理学习者,模板清晰呈现了 CPU 从指令取指到执行的完整工作流程,可用于入门学习、底层原理学习的知识框架搭建,快速建立对计算机核心部件的整体认知。模板完整覆盖中央处理器核心考点:从 CPU 的功能与基本结构、指令执行的完整过程,到数据通路的设计原理与分类;从硬布线与微程序控制器的工作原理与对比,到指令流水线的性能指标、冲突处理与多发技术;再到多处理器系统的基本概念与硬件多线程技术,均以思维导图形式清晰呈现,层级分明,便于快速查阅、重点标记与按需编辑修改,适配备考笔记、课程复习提纲、学习课件等多种场景。
第三章 存储系统
3.1存储器概述
存储器的分类
按在计算机中的作用(层次)分类
高速缓存Cache
主存储器(主存、内存)
可直接被CPU读写
辅助存储器(辅存、外存)
数据调入主存才能被CPU访问
手机中安装的APP存储在辅存
辅存
eg磁盘
外存
eg磁带,光盘
存储器的层次化结构

主存——辅存:
I/O
系统调用
硬件+操作系统实现
仅对应用级程序员透明
实现虚拟存储系统,解决了主存容量不够的问题
Cache——主存:
硬件自动完成
对应用程序员,操作系统程序员透明
解决了主存与CPU速度不匹配的问题
注
CPU与主存可直接交换信息
按存取方式分类
支持随机存取的存储器
半导体存储器
随机存取存储器RAM
静态随机存取存储器SRAM
动态随机存取存储器DRAM
只读存储器ROM
注!ROM芯片具有随机访问特性
读写任何一个存储单元所需时间都相同,与存储单元所在的物理位置无关
按地址访问存储单元
注:原意主要强调地址译码时间相同,现在的DRAM芯片采用行缓冲,因面可能因为位置不同而使访问时间有所差别。
顺序存取存储器SAM
特点
信息按顺序存放和读出,存取时间取决于信息存放位置,以记录块为单位编址
磁带存储器
存储容量大、存取速度慢
直接存取存储器DAM
特点
存取方式兼有随机访问和顺序访问的特点
直接定位到要读写的数据块,在读写某个数据块时按顺序进行
磁盘存储器
串行访问存储器:读写某个存储单元所需时间与存储单元的物理位置有关
都需指定数据存储地址,直接去地址读写数据
按内容访问存储器CAM或相联存储器AM
按照内容检索到存储位置进行读写
“快表” 就是一种相联存储器
相联存储器既可以按地址寻址又可以按内容(通常是某些字段)寻址
信息的可更改性
读写存储器( Read/Write Memory)
即可读、也可写(如:磁盘、内存、Cache)
只读存储器(ReadOnlyMemory)
只能读,不能写
eg
CD-ROM(光盘)
只读光盘存储器,不是半导体存储器的只读存储器ROM
CD压缩光盘
实体音乐专辑通常采用CD-ROM
实体电影采用蓝光光碟
BIOS通常写在ROM中(集成在主板上)
一般存不更改的信息
事实上很多ROM也可多次读写,只是比较麻烦
按信息的可保存性分类
断电后存储信息是否消失
易失性存储器
RAM
(主存、Cache)
非易失性存储器
ROM
磁表面存储器和光存储器
(磁盘、光盘)
信息读出后是否被破坏
破坏性读出:
如DRAM芯片,读出数据后要进行重写
非破坏性读出
如SRAM芯片、磁盘、光盘
按存储介质分类
磁表面存储器
以磁性材料存储信息
磁盘
磁带
磁芯存储器
半导体存储器
主存、Cache
以半导体器件存储信息
光存储器
以光介质存储信息
性能指标
存储容量
存储字数×字长(如1M×8位)
总容量=存储单元个数×存储字长
单位成本
每位价格=总成本/总容量
每个比特位需要付出的成本
换算成比特
存储速度
数据传输率=数据的宽度/存储周期
数据的宽度即存储字长
存储周期(读写周期/访问周期)=存取时间+恢复时间

存取时间:Ta
从启动一次存储器操作到完成该操作的时间,分为读出时间和写入时间。
存储周期(读写周期/访问周期)Tm:
存储器进行一次完整的读写操作所需的全部时间
即连续两次独立地访问存储器操作(读或写操作)之间所需的最小时间间隔。
主存带宽(Bm)
又称数据传输率
表示每秒从主存进出信息的最大数量
单位为字/秒、字节/秒(B/s) 或位/秒(b/s)
主存储器的基本组成
组成主存的基本半导体元件及原理


作为通电“开关”
防止电容内电荷在不进行读写时流出
电容
给电容充电:写数据
放电:读数据
接地端0V
电容,存储电荷(即存储二进制0/1)
概念
存储元:用来存储一位的二进制数0/1
存储字(存储单元):
一次可以读出的二进制位数
存储器每一次读或者写的单位
MOS管接了同一根线
存储体(矩阵)
存储字长
看存储体的具体结构
数据总线的宽度=存储字长
在给MOS管通电后有几根数据线(位线)来表示数据
数据线有电流通过表示1,无表示0
注
同一个存储器中,每个存储单元的宽度必须相同
即每个存储单元存储的比特位数必须相同。
DRAM芯片

一个存储器可能由多块存储芯片构成

红线:字选择线
绿线
数据线(位线)
数据总线
CPU通过数据总线从MDR中取走一整个字的数据
一位一bit
数据线有电流通过表示1,无表示0
译码器
将地址信号转化为字选通线的高低电平
一个地址对应其中某一条选通线
当字选线被接通,就可通过数据线把每一位二进制信息传输到MDR中
控制电路
等MDR中电信号稳定了再给总线送去数据
等MAR中电信号稳定再将地址送往译码器
片选线
头上划线表示低电平有效
CS
芯片选择信号
CE
芯片使能信号
读写控制线
一根

读写控制线WE(低电平写、高电平读)
两根
写控制线信号WE是低电平时表示此时芯片正在进行写操作
注意看题目给两根读写线还是一根——引脚计算
译码器后面往往会加个驱动器
保证译码器输出的信号稳定可靠
把电信号放大的部件
如何根据地址来决定要读/写哪个存储字
存储芯片
引脚计算
接收地址信号,数据信号,片选信号,读写信号……
考法:告诉一存储芯片的参数信息,判断存储芯片引脚至少为多少
每根线都对应一个金属引脚
地址线、数据线、片选线、读写控制线(可能分开两根,也可能只有一根)
供电引脚,接地引脚……
寻址
现代计算机通常按字节编址(每个字节),即每个字节对应一个地址(0,1,2……)
按字节寻址、按字寻址、按半字寻址、按双字寻址
多字节存放:
大端方式与小端方式

把字地址转化为与之对应的字节地址
判断是第几个字
将字地址算数左移两位成字节地址
行缓冲器
用来缓存指定行中整行的数据,通常用 SRAM 实现
3.3半导体随机存储器
SRAM和DRAM
栅极电容 双稳态触发器

栅极电容
读/写
读
连接电容,检测电流变化
写:
给电容充/放电
特点
优点
每个存储元制造成本更低
集成度高
1个或3个逻辑元件构成
功耗低
缺点
需要重写/再生
读出后需要重新充电
破坏性读出
需要刷新
电容上的电荷只能维持2ms
需要刷新(给电容充电),防止出现误差
地址线复用,线数减少一半
电容上有电荷为 1,无电荷为0
双稳态触发器
读/写
读
"查看"触发器状态
写:
改变触发器状态
特点
优点
能保持两种稳定的状态
只要不断电,触发器的状态就不会改变
缺点
每个存储元制造成本更高
集成度低
6个逻辑元件构成
功耗大
同时送行地址和列地址
集成度低,容量小,对应地址线少
易失性存储器
都以电信号的形式存储0/1→断电就丢失信息
DRAM和SRAM的比较
核心区别:
存储元不一样
DRAM芯片:
使用栅极电容存储信息
用于制造主存
SRAM芯片:
使用双稳态触发器存储信息
制造高速缓冲存储器Cache

SRAM采用六管静态MOS管存储元件,DRAM采用单管动态MOS管存储元件
DRAM的工作原理
注
刷新由存储器独立完成,不需要CPU控制
但刷新也是一个读取的过程,会和CPU的访存冲突
DRAM刷新周期:一般为2ms
电容内的电荷只能维持2ms。即便不断电,2ms后信息也会消失
2ms之内必须“刷新”一次(给电容充电)
以行为单位,每次刷新一行存储单元
构成存储器的所有芯片同时按行刷新
eg采用 64Kx1 位的 DRAM 芯片构成 128Kx8 位的存储器
64Kx1 位256X256个位平面组成
每个芯片有 256 行,所以存储器所有单元刷新一遍至少需要 256 次刷新操作
如何刷新
有硬件支持,读出一行的信息后重新写入,占用1个读/写周期
这里的读并不是把信息读入 CPU,也不是从 CPU 向主存存入信息,它只是把信息读出,通过一个刷新放大器后又重新存回存储单元,而刷新放大器是集成在 RAM 上的。
因此,这里只进行了一次访存,也就是占用一个存取周期
刷新方式
假设DRAM内部结构排列成128x128的形式,读/写周期(存取周期)0.5us
2ms共2ms/0.5us=4000个周期
分散刷新
每一次读写完都刷新一行
将存储器的系统工作周期分为两部分
前半部分用于读写或保持
后半部分用于刷新某一行
特点
优点
没有死区
缺点
加长了系统的存取周期

集中刷新

2ms内集中安排时间全部刷新
死区
有一段时间专门用于刷新,无法访问存储器,称为访存“死区”
特点
优点
读写操作不受刷新工作的影响
缺点
在死区内不能访问存储器
异步刷新
2ms内每行刷新1次即可→2ms内需要产生128次刷新请求每隔2ms/128= 15.6us一次每15.6us内有0.5us的“死时间”
异步刷新虽然缩短了死时间,但死时间依然存在

两次刷新操作之间的时间间隔
刷新周期除以行数,得到两次刷新操作之间的时间间隔t,每隔t产生一次刷新请求
优点
避免CPU连续等待长时间,减少了刷新次数
DRAM的地址复用技术

行、列地址分两次送,可使地址线更少芯片引脚更少
减少选通线的数量
存储器的读写周期
SRAM的读周期

SRAM的写周期

半导体存储芯片的基本结构

存储矩阵
由多个存储单元构成,每个存储单元又由多个存储元构成
由大量相同的位存储单元阵列构成
译码器驱动
译码器
驱动器
将来自地址总线的地址信号翻译成对应存储单元的选通信号,该信号在读写电路的配合下完成对被选中单元的读/写操作
读写电路:
包括读出放大器和写入电路,用来完成读/写操作
每次读/写一个存储字
读/写控制线:
决定芯片进行读/写操作。
片选线:
确定哪个存储芯片被选中
可用于容量扩充
地址线:
是单向输入的,其位数与存储字的个数有关
数据线:
是双向的,其位数与读出或写入的数据位数有关
数据线数和地址线数共同反映存储芯片容量的大小。
SRAM的芯片结构
存储体
地址译码器
地址译码方式
一维译码
线选法或单译码法
适用于与小容量存储器
只有一个行译码器
二维译码
重合法或双译码法
适用于与大容量存储器
驱动器
在双译码结构中,一条X方向的选择线要控制在其上的各个存储单元的字选择线,所以负载较大,因此需要在译码器输出后加驱动器
I/控制电路
用于控制被选中的单元的读出或写入,具有放大信息的作用
片选控制信号
读写控制信号
SDRAM芯片技术
Synchronous DRAM
同步动态随机存储器
同步DRAM
也是一种DRAM
也需要刷新
与CPU之间采用同步方式交换数据
读写受系统时钟的控制,因此与CPU之间采用同步方式交换数据
传统 DRAM 芯片与 CPU 采用异步方式交换数据
它将CPU或其他主设备发出的地址和控制信息锁存起来,经过确定的几个时钟周期后响应。因此主设备在这段时间,可以安全地进行其他操作
支持突发传输
DDR SDRAM 通过芯片内部读写缓冲数据的两位预取,并利用存储器总线上时钟信号的上升沿和下降沿进行两次传送来同步,实现一个时钟内传送两次数据。类似的技术可以实现一个时钟内传送4个数据DDR2或8个数据DDR3
ROM
ROM的特点
结构简单,位密度比可读写存储器高
具有非易失性
ROM的类型
MROM
掩模式只读存储器
厂家在生产时写入,无法修改
只能读出,不可重写
PROM
一次可编程只读存储器
写入一次之后就不可更改
可擦除可编程只读存储器EPROM
用户可以用编程器写入信息,并且可以对其内容进行多次修改
可进行多次重写
修改次数有限,写入时间很长
不能取代RAM,因为EPROM的编程次数有限,且写入次数过长
紫外线擦除(UVEPROM)
擦除所有信息
电擦除(EEPROM)
电擦除电改写只读存储器
可用电来擦除和重编程
可以选择只擦除个别字
缺点
每次写入操作时先执行一个自动擦除,因此比RAM的写操作慢的多
闪速存储器 Flash Memory(闪存)
U盘、SD卡
断电后也能保存信息
且可进行多次快速擦除和重写
每个存储单元体积比RAM体积更小,可保存更多二进制比特位
每个存储元只需单个MOS管,位密度比RAM高
Flash存储器的基本操作
编程
擦除
采用电擦除
读取
闪存的写速度一般比读速度更慢
闪存需要先擦除再写入
Flash存储器的读操作速度和写操作速度相差很大,其读取速度与半导体RAM芯片相当,而写数据(快擦-编程)的速度则与硬磁盘存储器相当
固态硬盘SSD
由固态电子存储芯片阵列制成的硬盘,由控制单元和存储单元组成
由控制单元+存储单元(Flash 芯片——闪存)构成
与闪存的核心区别
控制单元不一样
但存储介质都类似,可进行多次快速擦除重写
读写速度快,低功耗
缺点是价格较高
目前个人电脑上常用SSD取代传统的机械硬盘
手机辅存也用Flash芯片,但相较于SSD使用的芯片集成度高、功耗低、价格贵
注
很多ROM芯片虽然名字是“Read-0nly”,但很多ROM也可以“写”
RAM芯片是易失性的,ROM芯片是非易失性的。很多ROM也具有“随机存取”的特性
RAM和ROM的概念不是完全对立:随机存取
计算机内的重要ROM
1.辅存
操作系统安装在辅存
2.BIOS芯片
CPU从主板上ROM芯片中读取开机所需信息
主板上的BIOS芯片(ROM)存储了“自举装入程序”,负责引导装入操作系统(开机)
逻辑上,主存由RAM+ROM组成
且二者常统一编址
注:我们常说“内存条”就是“主存”,但事实上,主板上的ROM芯片也是“主存”的一部分
物理上在主板上,逻辑上和RAM共同组成主存
计算机的操作系统保存于硬盘上,所以需要BIOS的引导程序将操作系统引导到主存(RAM)中,而引导程序则固化于 ROM 中。
补充
主存RAM
存指令,数据
CPU从主存中取指令并执行指令
3.5双端口RAM和多模块存储器
多模块存储器
原理与特点
包含多个存储体
每个模块都有相同的容量和存取速度。
各模块都有独立的读写控制电路、地址寄存器和数据寄存器。
它们既能并行工作,又能交叉工作。
可同时对多个模块进行访问
可以让每个存储体独立工作,CPU可以选择每一次要从哪个存储体读出哪个字。(相互独立)
可独立组成一个存储模块
灵活性高
按编址方式分
连续编址
通过多个模块可并行存取来提高吞吐量
如,一个模块执行程序,另一个实现DMA访问
交叉编址
通过多个模块交叉存取来提供吞吐量
轮流启动
流水线工作方式
同时启动
根据总线宽度和每个存储体的宽度来区分
多体并行存储器
分类
高位交叉编址
连续编址
高位为体号,低位为体内地址
低位交叉编址
交叉编址
高位为体内地址,低位为体号
“芯片各单元采用交叉编址方式”,默认低位交叉

注
每个存储体的存储周期是不变的
存储体传完了数据,还需要一段时间恢复
要提高总吞吐效率,就要让存储体并发执行
高位交叉编址
实际效果相当于单纯的扩容
理论上多个存储体可以被并行访问,但是由于通常会连续访问
连续访问同一个存储体需要等待
低位交叉编址
采用流水线技术
当存储模块数m≥T/r时,可使流水线不间断
每个存储周期内可读写地址连续的m个字
微观上,m个模块被串行访问;
宏观上,每个存取周期内所有模块被并行访问
采用“流水线”的方式并行存取
宏观上并行,微观上串行
宏观上,一个存储周期内,m体交叉存储器可以提供的数据量为单个模块的m倍
存取周期为T,总线传输周期(或存取时间)为r,为了使流水线不间断,应保证模块数m≥T/r
通过数据总线把一个数据传给CPU至少需要r
模块数x总线周期≥存取周期
给定一个地址x,如何确定属于第几个存储体
根据体号
根据x对m取余
例子
有m个存储体,存储周期为T,字长W,每隔r(总线传送周期)时间启动下一个存储体,连续存取n个字,求存储器的存取速率。(m≥T/r)
连续存取n个字耗时
T+(n-1)r
带宽
n*W/(T+(n-1)r )
n较大时 带宽为W/r
单个存储体带宽为W/T
模块序号=访存地址%存储器交叉模块数。
单体多字存储器
相当于进行了合并(位扩展)
主要解决访存速度的问题
并没有解决主存容量太小的问题
特点
每个存储单元存储m个字
总线宽度也为m个字
一次并行读出m个字
当指令和数据连续存放,且没有过多的跳转指令时,单体多字存储器能有效地提高主存的读/写速度。
缺点
每次只能同时取m个字,不能单独取其中某个字
一次读一整行
灵活性差
指令和数据在主存内必须是连续存放的
双通道内存
低位交叉的二体存储器
相同主频,相同容量
两者整体读取速度相差不大
改善主存速度的方法
提高DRAM芯片本身的速度
如SDRAM
采用并行结构技术
如双端口和多模块存储器利用时间并行和空间并行在结构上进行优化
在CPU和主存之间增加Cache
3.4主存与CPU的连接
注:

现在的计算机MAR、MDR通常集成在CPU内部。存储芯片内只需一个普通的寄存器(暂存输入、输出数据)
连接原理
主存与cpu
通过数据总线、地址总线和控制总线连接
数据总线
位数与工作频率的乘积正比于数据传输率
地址总线
位数决定了可寻址的最大内存空间
控制总线
指出总线周期的类型和本次输入/输出完成的时刻
地址线的连接
CPU的地址线
决定了整个主存空间的寻址范围
因此,它一般比存储芯片的地址引脚线多
连续编址时,高位作字拓展时片选信号的译码
交叉编址时,低位片选信号译码
数据线的连接
CPU的数据线
决定了一次可读写的最大数据宽度
因此也往往比存储芯片的数据线多
通常将CPU数据线连到多个进行位扩展的芯片中,使扩展的位数与CPU数据线数相等
控制线的连接
CPU中的MREQ来确定访问的是主存还是I/O端口,只有MREQ为低电平时才需要选择存储芯片
通常将系统加电时用于系统引导的一组程序存放在ROM区
操作系统内核和用户程序则放在RAM区
主存容量的扩展
位扩展法


存储器的字长变长
更好发挥数据总线的数据传输能力
数据总线宽度>存储芯片字长 --位扩展
CPU上绿色的表示CPU同时可以处理的数据位数
CPU红色表示CPU所具有的地址信息
字扩展法
字扩展
扩展主存字数——字扩展
可以增加存储器的存储字数,可以更好的利用CPU的选址能力
线选法

线选法:
A14、A13只能为01或10
连接片选线的只能01或者10,不能11
选一个芯片工作
用专门的地址线作为片选信号,选中某个芯片
n条线→n个选片信号
整个主存地址空间不连续
译码片选法


不是说地址信息从左边芯片传过来的,所有的地址信息都是直接来自于地址总线,都是CPU传过来的
低电平有效,画个圆圈

非门有圆圈
输出一个0其余全是1
整个主存地址空间连续
1-2译码器


看连接片选线的地址线
与不连接的无关,取值任意不影响


翻译成十进制
逆过来只上大下小而不是从右边到左边

增加存储器的字数,更好利用CPU的寻址能力
注
接入各芯片地址端的是地址线的低位
地址线高几位作为译码器输入
字位同时扩展法

不同维度扩展CPU的总容量
关于译码器知识补充

原:输出的有效信号是1,通过非门输出的有效信号是0
使能端
使译码器能够工作

先送出地址信号
等地址信号稳定后发出存储器请求信号
MREQ
主存储器请求信号
CPU想要访问主存时使其有效
给其余两个使能信号合法值,连接剩下一个
74LS138译码器芯片
不属于此译码空间的地址,即没有被选择的片,若低电平有效,则说明地址通过译码器输出数字为1。
注
MAR 的位数和主存地址空间的大小有关
外部存储器
磁盘存储器
Key: 磁盘存取时间的计算
磁表面存储
计算机的外存储器又称为辅助存储器
目前主要使用磁表面存储器
外存储器既可以作为输入设备,也可以作为输出设备
既可以存数据,也可以读数据
注
每次读和写都是以一比特为单位
读和写不能同时进行
磁表面存储器的优点:
①存储容量大,位价格低
②记录介质可以重复使用
③记录信息可以长期保存而不丢失,甚至可以脱机存档
④非破坏性读出,读出时不需要再生
磁表面存储器的缺点:
①存取速度慢
②机械结构复杂
③对工作环境要求较高
受强磁场干扰,信息可能丢失
原理
当磁头和磁性记录介质有相对运动时,通过电磁转换完成读/写操作
编码方法
按某种方案(规律),把一连串的二进制信息变换成存储介质磁层中一个磁化翻转状态的序列,并使读/写控制电路容易、可靠地实现转换
磁盘设备的组成
存储区域
磁头数(Heads)
记录面数
表示硬盘总共有多少个磁头
磁头
用于读取/写入盘片上记录面的信息,一个记录面对应一个磁头。
柱面数(Cylinders)
表示硬盘每一面盘片上有多少条磁道。
在一个盘组中,不同记录面的相同编号(位置)的诸磁道构成一个圆柱面。
扇区数
表示每一条磁道上有多少个扇区
关系
一块硬盘含有若干个记录面
每个记录面划分为若干条磁道
每条磁道又划分为若干个扇区
扇区(也称块)
磁盘读写的最小单位
磁盘存储器以成批(组)方式进行数据读/写
主机每一次对磁盘进行读或者写操作都是以扇区为单位的
磁盘按块存取
硬盘存储器
磁盘驱动器
核心部件是磁头组件和盘片组件
由磁头、磁盘和读/写电路等组成
也就是我们平常所说的磁盘本身
盘片、移动臂等硬件
温彻斯特盘是一种可移动头固定盘片的硬盘存储器。
磁盘控制器
是硬盘存储器和主机的接口
一种I/O接口
实现磁盘与主机之间的数据交互
主流的标准有IDE、SCSI、SATA等。
磁记录介质
盘片
磁头质量的好坏,不仅与铁芯的材料有关,而且与磁头加工工艺有关
磁盘的性能指标
①磁盘的容量:
一个磁盘所能存储的字节总数
分类
非格式化容量
是指磁记录表面可以利用的磁化单元总数
磁盘在物理上来看,总共可以存储的二进制比特位的上限
格式化容量
是指按照某种特定的记录格式所能存储信息的总量
格式化容量要比非格式化的容量更小
注
在磁盘的格式化过程中,要对磁盘划分扇区,每个扇区要写入一些控制信息,扇区尾部还要留有一定的空隙(备用扇区),这些均需占用一些存储空间
②记录密度:
盘片单位面积上记录的二进制的信息量
道密度
是沿磁盘半径方向单位长度上的磁道数
eg 60道/cm
位密度
是磁道单位长度上能记录的二进制代码位数
eg,600bit/cm
面密度
=位密度x道密度
注
磁盘所有磁道记录的信息量相等
每个磁道的位密度都不同
越靠近内侧的磁道位密度越大
最内侧的磁道的位密度很大程度上会影响到磁盘的整体容量
③平均存取时间:
平均存取时间=寻道时间 +旋转延迟时间+ 传输时间
寻道时间
磁头移动到目的磁道
旋转延迟时间
磁头定位到所在扇区
旋转延迟时间若题目没有给,按照磁盘转半圈需要的时间来算
传输时间
传输数据所花费的时间
若题目给磁盘控制器延迟,需要加上
④数据传输率:
也称作内部传输速率
持续数据传输速率
磁盘存储器在单位时间内向主机传送数据的字节数或二进制信息量
不包括磁头定位和旋转等待
读/写速度
假设磁盘转数为r (转/秒),每条磁道容量为N个字节,则数据传输率为D=rN
理论最大值
区别
外部传输速率
通常称为突发数据传输速率或接口传输速率
指主机中的外设控制接口从(向)外存储器的缓存读出(写入)数据的速度
磁盘地址

磁盘驱动器的地址
柱面号(磁道号),盘面号(磁头号),扇区号

磁盘的工作过程
硬盘的主要操作是寻址、读盘、写盘
硬盘的工作过程
第一步是取控制字
每个操作都对应一个控制字
第二步是执行控制字
硬盘属于机械式部件,其读写操作是串行的
不可能在同一时刻既读又写,也不可能在同一时刻读两组数据或写两组数据
注
送往总线/来自总线的数据为并行数据
需要利用串——并变换电路
磁盘阵列
RAID ( Redundant Array of Inexpensive Disks,廉价冗余磁盘阵列
将多个独立的物理磁盘组成一个独立的逻辑盘
通过磁盘阵列管理软件实现
思想
数据在多个物理盘上分割交叉存储、并行访问
提高数据传输速度
提高存储系统的数据吞吐量
利用磁盘廉价的特点提高存储性能、可靠性和安全性
利用冗余磁盘技术来进行错误恢复来提高系统的可靠性
分类
RAID0:无冗余和无校验的磁盘阵列
逻辑上相邻的两个扇区在物理上存到两个磁盘
多个磁盘数据并行访问
逻辑相邻通过软件处理实现物理分离
实现
把连续多个数据块交替地存放在不同物理磁盘的扇区中
逻辑上相邻的两个扇区在物理上存到两个磁盘
类比“低位交叉编址的多体存储器”
几个磁盘交叉并行读写
条带化
是一种将数据分片,分别存储至不同的磁盘,提高读/写速度的技术
并行工作提高数据传输速度
特点
无冗余和无校验
优点
扩大了存储容量
提高了磁盘数据存取速度
读/写速度快
缺点
RAID0没有容错能力
没有冗余,若其中一块磁盘损坏,则数据就会丢失
应用
适用于要求I/O响应速度较快的场合
采用连续分布或大数据交叉分布时,如果两个I/O请求访问不在一个盘上的数据,并行传输,使得I/O请求同时响应,具有较快的I/O响应能力
适合大容量I/O请求的场合
采用小条带交叉分布时,一个I/O请求可能占用多个条带,并分布在不同的盘上,因而可以并行传送同一个I/O请求的不同条带上的数据块
RAID1:镜像磁盘阵列。
存两份数据
镜像磁盘互为备份
提高可靠性
两个磁盘同时进行读写,互为备份
特点
有冗余,能校验
优点
可靠性提高了
提高读取速度
读取1的某一部分,读取另一个的另一部分,也能提高读取速度
缺点
存储空间利用率不高
容量减少一半
有冗余
RAID2:采用纠错的海明码的磁盘阵列。
用海明校验生成多个磁盘校验盘
逻辑上连续的几个bit物理上分散存储在各个盘中
4bit信息位+3bit海明校验位——可纠正一位错,发现两位错
特点
无冗余和无校验的磁盘阵列
优点
实现纠正一位错误、检测两位错误的功能
RAID3:
位交叉奇偶校验的磁盘阵列
奇偶校验法生产单个冗余盘
RAID4:
块交叉奇偶校验的磁盘阵列
RAID5:
无独立校验的奇偶校验磁盘阵列
通过数据校验提高容错能力
越往后可靠性越高,越安全
注
磁盘也有磁盘缓存Cache
减少磁盘访问次数而采用的内存缓冲技术
读缓存
写缓存
固态硬盘(SSD)
原理
基于闪存技术Flash Memory
属于电可擦除ROM,即EEPROM
只读存储器
组成
闪存翻译层
地址变换的操作
将逻辑地址映射到对应的物理地址
负责翻译逻辑块号,找到对应页(Page)
存储介质:多个闪存芯片(FlashChip)
每个芯片包含多个块 (block)
每个块包含多个页(page)
读写性能特性
系统对固态硬盘的读写,以页(page) 为单位读/写
相当于磁盘的“扇区"
磁盘读写以块为单位
以块(block) 为单位“擦除",擦干净的块,其中的每页都可以写一次,读无限次
块相当于磁盘的磁道
以块为单位擦除,不想被擦除的页先复制到另一块对应的位置,再写入新数据(数据迁移)再擦除,再重新映射逻辑块号,舍弃原有映射
支持随机访问
系统给定一个逻辑地址,闪存翻译层可通过电路迅速定位到对应的物理地址
对比:磁盘通过移动机器臂
读快、写慢
要写的页如果有数据,则不能写入,需要将块内其他页全部复制到一个新的(擦除过的)块中,再写入新的页
进行随机读写时由于不需要机械操作,速度明显高于磁盘
与机械硬盘相比的特点
SSD
读写速度快,随机访问性能高,用电路控制访问位置
机械硬盘
通过移动磁臂旋转磁盘控制访问位置,有寻道时间和旋转延迟
SSD安静无噪音、耐摔抗震、能耗低、造价更贵
SSD
一个“块"被擦除次数过多(重复写同一个块)可能会坏掉
机械硬盘
机械硬盘的扇区不会因为写的次数太多而坏掉
磨损均衡技术
思想:
将"擦除"平均分布在各个块上,以提升使用寿命
动态磨损均衡
写入数据时,优先选择累计擦除次数少的新闪存块
静态磨损均衡
SSD监测并自动进行数据分配、迁移
让老旧的闪存块承担以读为主的储存任务
让较新的闪存块承担更多的写任务
3.6高速缓冲存储器
程序访问的局部性原理
局部性原理
空间局部性
数组的顺序访问
若一个内存位置被引用,则它附近的位置很快也会被引用
时间局部性
循环结构
是指一个内存位置被重复引用
数组不算,因为访问不同内存位置
Cache能够有效工作的理论依据
基于局部性原理,可以把CPU目前访问的地址“周围”的部分数据放到Cache中
二维数组一维存储
若二维数组按行存储,A按行访问,B按列访问数组,B的空间局部性更差
注:
Cache 被集成在CPU内部
通常由SRAM构成
虚拟地址和逻辑地址
Cache 通常工作在物理地址层面(也有使用虚拟地址的 Cache,但 408 中默认讨论物理地址 Cache)
描述的是物理地址空间
是 CPU 通过地址总线最终访问主存(RAM)芯片使用的地址。
逻辑地址/虚拟地址:
这是应用程序看到的地址空间,由操作系统通过页表机制映射到物理地址。
数据交换单位
CPU与Cache之间
数据交换单位
以字为单位
CPU与各个部件之间的数据传送都是以字为单位
本质与CPU里的寄存器进行数据交换
主存和Cache之间
数据交换以Cache块为单位
数据交换单位为“块”
以Cache块为单位
按字节编址时Cache与主存间数据传输的最小单位(字节数)
Cache分块
Cache的块也被称为行,块号也被称为行号
Cache行的大小(也称为块大小)
Cache行长(Cache行的大小) = Cache块大小
Cache块,与主存块的大小相等
编号从0开始
注:
操作系统中,通常将主存中的“一个块”也称为一个“页/页面/页框”
Cache的基本工作原理

冲刷
通过将有效位清0来淘汰Cache行中的主存块,称为冲刷
每次被访问的主存块,定会被立即调入Cache
CPU会优先在Cache中找数据,找不到就在主存中找,并将该存储单元所从属的一整个块调入Cache之中,再访问cache。(复制一份)
主存系统的效率
概念
命中
CPU想访问的数据可以直接在Cache中找到
命中率H
CPU想访问的数据已经在Cache中的比率
设一个程序执行期间,Cache的总命中次数为Nc,访问主存的总次数为Nm
命中率H = Nc/(Nc+Nm)
命中率与Cache 的容量与块长有关
块长取一个存取周期内从主存调出的信息长度
缺失(未命中)率
M=1-H
平均访存时间
设tc为访问一次Cache所需时间,tm为访问一次主存所需时间
Cache-主存 系统的平均访问时间t为

未命中再访问又可
tc+(1-H)tm
注
默认 Cache 不命中的时间为访问 Cache 和主存的时间之和
Cache与主存的数据块的对应关系
注
Cache 中存放的是主存中某一部分信息的副本
Cache 的功能完全由硬件实现
Cache缺失不是执行相应的程序完成,而是硬件自动实现
但是还是会引起指令流水线的阻塞
Cache 地址空间和主存地址空间相互独立
Cache相关概念
Cache中存储的信息
有效位+脏位+替换控制位+标记位+整块数据
有效位
1bit
0/1
0表示标记无效,1表示标记有效
用来区分是否为0号块(计算机存储的是0-1,没法设置空)
脏位/一致性维护位
写策略
直写法(全写法)不用(0位),回写法需要(1位)
替代控制位/替代算法位
操作系统关心
标记
指明对应的主存块号
Cache中存放的是哪个主存块
地址映射
不同映射方式,标记的位数不同
二进制表示,初始都为0
cache 命中的条件
标记相等、有效位为1
Cache容量
=存储容量+标记阵列容量
指令Cache和数据Cache分离
数据和指令分别存放在不同Cache之中,各个区域连续存放
地址映射方式
CPU区分cache与主存的数据块的对应关系
全相联映射
特点
主存块可以放在Cache的任意位置
每行的标记指出该行取自主存的哪一块
地址结构
标记+块内地址
标记即为主存块号
优点
空间利用率高,命中率也高
缺点
标记的比较速度较慢
可能要对比所有的标记
实现成本较高
需要相联存储器进行地址映射
直接映射
特点
每个主存块只能放到一个特定的位置:
Cache块号=主存块号% Cache总块数
若Cache总块数=2^n,则主存块号末尾n位直接反映它在Cache中的位置
Cache行号和主存块号末尾n位一一对应
Cache中的标记自动添加上行号,加上块内地址就是物理地址
将主存块号的其余位作为标记,也是Cache中存储的内容
地址结构
标记+Cache行号+块内地址
标记+Cache行号,对应主存块号
替换
行数角度
主存中每Cache行数的整数倍的个主存块被映射在同一行
所有地址相差 N (缓存总行数) 的整数倍的主存块,必然冲突在同一个缓存行。当访问 A + K*N 时,它必须替换掉当前在行 X 中的那个块
容量角度
在顺序访问一个大小为缓存容量 C 的整数倍 (K * C) 的数组时:
访问前 C 字节填充缓存
每顺序访问超过缓存容量 C 的数据量,就会导致一次完整的缓存内容轮换
优点
实现简单
对于任意一个地址,只需对比一个“标记”
速度最快
缺点
块冲突频率最高
空间利用率最低
Cache存储空间利用不充分,命中率低
其他地方有空闲Cache块,但是主存块不能使用
组相联映射
特点
Cache块分为若干组,每个主存块可放到特定分组中的任意一个位置
组号=主存块号%分组数
分组数2^i=Cache总行数/几个一组(几路)
地址结构
标记+组号+块内地址
根据主存块号的后i位确定所属分组号
术语
2路组相联映射
2块为一组
n路组相联映射
每 n个Cache行为一组
注
m路组相联意味着每次标记位同时和m行中保存的标记位比较
比较器需要m个
例子
假设某个计算机的主存地址空间大小为256MB,按字节编址,其数据Cache有8个Cache行,行长为64B
注
Cache行即Cache块,与主存块的大小相等
全相联映射
主存块号22位作为标记
直接映射
采用前19位作标记,末尾3位直接舍弃
2路组相联映射
8行Cache,2块为一组,分四组
前20位作为标记,末尾两位直接舍弃
替换算法
直接映射无需考虑替换算法
随机算法(RAND)
随机地确定替换的Cache块
优点
实现简单
缺点
命中率较低
没有依据程序访问的局部性原理
先进先出算法(FIFO)
选择最早调入的行进行替换
优点
实现简单
缺点
没有依据局部性原理
最先被调入Cache的块也有可能是被频繁访问的
抖动现象
频繁的换入换出现象(刚被替换的块很快又被调入
近期最少使用算法(LRU)
思想
基于“局部性原理”
选择最久没被访问过的块作为替换的行
是堆栈类算法
做题
从未命中的数据往前看,找最远的替换
优点
LRU算法的实际运行效果优秀,Cache命中率高
实现
对每行设置一个计数器
用于记录每个Cache块已经有多久没被访问
Cache命中
命中行计数器清0
其他各行计数器均加1
问题:如果一直命中一行,其他计数器无限大
需要替换时比较各特定行的计数值,将计数值最大的行换出
改进
命中时
所命中的行的计数器清零
比其低的计数器加1,其余不变
只会最多变到清0前的数并不会出现两个最大数
原先就不会有两个重复的数,因此,这种方式不会改变大小排序,比他低的数最多变成清零的数,而不会出现两个一样的数(相当于从第3名掉到最后一名)
未命中
有空闲行时
新装入的行的计数器置0
其余非空闲行全加1
无空闲行时
计数值最大的行的信息块被淘汰
新装行的块的计数器置0,其余全加1
好处:
Cache块的总是=2^n,则计数器只需n位
当只有四个Cache行时,四个计数器的值只有0123这几种情况,不会出现4
Cache装满后所有计数器的值一定不重复
最不经常使用算法(LFU)
思想
将一段时间内被访问次数最少的存储行换出
实现
每行也设置一个计数器
记录每个Cache块被访问过多少次
计数器可能需要比较长的比特位来表示
新行建立后从0开始计数
每访问一次,被访问的行计数器加1
需要替换时将计数值最小的行换出
若有多个计数器最小的行,可按行号递增、或FIFO(先进先出)策略进行选择
缺点
计数器可能需要比较长的比特位来表示
曾经被经常访问的主存块在未来不一定会用到
但因为在一段时间内被频繁访问过计数值可能极其大
并没有很好地遵循局部性原理,因此实际运行效果不如LRU
注
颠簸/抖动现象
频繁访问的主存块数量> Cache行的数量
当程序的分块局部化范围超过了cache组大小时
命中率很可能很低,需要进行频繁的换入换出
写策略
CPU修改Cache中的数据副本之后,与主存中的数据母本一致性问题
写命中
要写的数据已经存在cache之中
全写法 (写直通法,write-through)
把数据同时写入Cache和主存
一般使用写缓冲(write buffer)
CPU同时写入Cache和写缓冲
特点
优点
Cache块被替换时无需写回
更能保证数据一致性
适合安全性要求很高的应用
缺点
CPU每次进行写操作时,除了访问Cache之外,还要进行访存
增加了访存次数,降低了Cache的效率,速度变慢
写缓冲
SRAM实现的FIFO队列
SRAM实现的还有行缓冲
写缓冲在专门的控制电路控制下逐一写回主存
特点
CPU写的速度很快
若写操作不频繁,则效果很好
若写操作很频繁,可能会因为写缓冲饱和而发生阻塞
写回法(write-back)
只修改Cache的内容,而不立即写入主存,只有当此块被换出时才写回主存
Cache 中的信息不一定与主存中的信息一致
实现
每个Cache必须设置一个标志位(脏位)
表示是否被修改过
未被修改的块不必写回
修改过的块被替换时写回一整块
特点
优点
减少了CPU的访存次数,节省写操作所需的时间
速度快,更适合访问密集型的应用
缺点
存在数据不一致的隐患
写未命中
要写的数据不在Cache中
写分配法(write-allocate)
把主存中的块调入Cache,在Cache中修改
搭配写回法使用
非写分配法(not-write-allocate)
只写入主存,不调入Cache
搭配全写法使用
特点
只有”读“未命中时才调入Cache
写操作未命中直接写
多级Cache

特点
各级Cache之间常采用“全写法+非写分配法“
Cache-主存 之间常采用“写回法+写分配法”
避免了频繁写造成的写缓存饱和
cache一致性问题产生的情况
对Cache进行更新时
当多个设备都允许访问主存时
当多个CPU都带有各自的Cache而共享主存时
袁书
全写法
若写命中,则同时写Cache和主存
若写不命中
写分配法
主存块中更新相应存储单元,然后分配一个Cache行,将更新的主存块装入到分配法Cache行中
非写分配法
仅更新主存块而不装入主存块到Cache中
回写法
当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主 存,只有当此块被换出时才写回主存
若写不命中
写分配法
设置了一个修改位/脏位(dirty bit)
若修改位为1,则说明对应cache行中的主存块被修改过,替换时需要写回主存
若修改位为0,则说明对应cache行中的主存块未被修改过,替换时不需要写回主存
补充
指令 Cache 通常比数据 Cache 具有更好的空间局部性
指令流通常是顺序执行的
数据流跳转或随机访问的概率较高
注
当 CPU 访存时,先要到 Cache 中查看该主存地址是否在 Cache 中,所以发送的是主存物理地址。只有在虚拟存储器中,CPU发出的才是虚拟地址
页面存储

快表
采用SRAM
主存采用DRAM
是一种相联存储器

3.7虚拟存储器
虚拟存储器的基本概念
是一个逻辑模型
功能
用户给出一个地址(虚地址或逻辑地址),虚拟存储器要给出该地址对应的数据。
区别
实地址或物理地址
主存单元地址
实现
由辅助硬件将虚地址映射到主存当中的某个单元
地址转换
地址转换工作由CPU的存储器管理部件MMU完成
在转换过程中,MMU 需要查找对应的页表项,根据页表项中的装入(有效)位是否为1来确定是否发生缺页。
在地址转换的过程中,MMU 会检查页表项的访问权限,以确保进程有权访问某个页面,否则就会访问越权
页式虚拟存储器

划分页
虚拟空间与主存空间都被划分成同样大小的页
实页
主存的页
虚页
虚存的页
优点
页面的长度固定,页表简单,调入方便
缺点
程序不可能正好是页面的整数倍,最后一页的零头将无法利用造成浪费
页不是逻辑上独立的实体,处理、保护和共享都不及段式虚拟存储器方便
页表
表项
存放位置字段
装入位/有效位/存在位
1
0
没有被调入主存
若位置字段为NULL
则是未分配页
不为NULL
则是未缓存页
修改位
替换控制位
如FIFO位、LRU位
访问权限位
页面是可读可写,只读还是只可执行
禁止缓存位说明页面是否可以装入cache
系统中每个进程有一个页表
页表中每个表项与一个虚页对应
页表属于进程控制信息,存放在进程地址空间的内核区,页表在主存的首地址记录在页表基址寄存器中
页表中的每个表项反映的是对应虚拟页面的位置和使用等信息,通常只能由操作系统和硬件进行访问,虚拟存储管理机制对用户进程来说是透明的
段式虚拟存储器
段是按程序的逻辑结构划分的
各个段的长度因程序而异
虚拟地址分为两部分:
段号和段内地址
段表:
每一行记录了与某个段对应的段号、装入位、段起点和段长等信息。 由于段的长度可变,所以段表中要给出各段的起始地址与段的长度。
段页式虚拟存储器
把程序按逻辑结构分段,每段再划分为固定大小的页
主存空间也划分为大小相等的页,
特点
程序对主存的调入、调出仍以页为基本传送单位
每个程序对应一个段表,每段对应一个页表。
段号+段内页号+页内地址
快表TLB
页表、段表存放在主存中,收到虚拟地址后要先访问主存,查询页表、段表,进行虚实地址转换。
放在主存中的页表称为慢表(Page)。

TLB标记字段
若为全相联方式
则TLB标记字段的内容为该表项对应的虚拟页号
若为组相联方式
则TLB标记字段的低位部分为TLB组的组索引 高位为虚拟页号
为降低替换算法开销,TLB常采用随机替换策略
TLB找物理地址,Cache中保存的数据是主存块,即物理地址对应的数据
补充
真题的两个默认条件
先访问Cache后访问主存
Cache缺失处理过程中CPU同时取得数据
区别
关于Cache不命中,两种访问一种是直接拿主存单元,一种是再访问Cache
真题直接拿
关于TLB缺失
访问页表(主存),将缺失的页表项先送向TLB,然后再访问TLB,拿到物理地址,再访问Cache
Linux虚拟地址空间
用户区
用户栈
共享库
公共的共享函数库代码
堆(HEAP)
动态分配存储区,由低地址向高地址增长
读写数据区
存放用户进程的静态全局变量
只读代码/数据区
内核区
补充
常规存储管理方式的特征
一次性
作业在运行前必须一次性地全部装入内存后方能开始运行
驻留性
作业装入内存后,便一直驻留在内存中,直至作业运行结束
虚拟存储器中,地址映射由操作系统来完成,但需要一部分硬件基础的支持,如快表、地址映射系统等
注
由于缺页处理代价较大,所以应该增加命中率
因此在主存页框和虚拟页之间应采用全相联映射
进行写操作时
由于磁盘的访问速度很慢,所以每次写操作不能同时写DRAM缓存和磁盘
采用回写方式
页表不命中,Cache 一定也不命中(Cache 是页面的副本)
Cache 不命中时只需从主存读取数据
页表不命中时需要从辅存读取数据
Cache 缺失处理由硬件完成
TLB 缺失处理既可以由硬件完成,又可以由软件完成
硬件/软件实现:
硬件实现的功能操作系统看不见也无法干涉,而软件实现的功能操作系统会执行其他程序
Cache-主存层次
交换的是主存块
主要解决速度不匹配问题
替换算法由硬件实现
可采用回写法或全写法;
可采用直接映射、组相联或全相联
主存-外存层次
交换的是页
替换算法由软件实现
通常采用回写法
访问外存的代价很大
通常采用全相联映射
提高命中率
数据交换单位
CPU(寄存器)和Cache
交换单位是机器字
Cache和内存
交换单位是主存块/Cache行
eg32B
内存和磁盘
交换单位是页(扇区)
eg4KB
线选法:
能保持两种稳定的状态
读写控制线