计算机组成原理 第三章 存储系统

文章目录

3.1 存储器概述

在这里插入图片描述

3.1.1 存储器分类

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

  1. 主存储器。简称主存、内存。用来存放计算机运行期间所需的程序和数据。CPU可以直接随机对其进行访问,也可以和高速缓冲存储器(Cache)及辅助存储器交换数据。容量小,存取速度快,每位价格高。
  2. 辅助存储器。简称辅存,外存。存放当前暂时不用的程序和数据,以及需要永久保存的信息。辅存的内容需要调入主存才能被CPU访问容量大,存取速度慢,单位成本低
  3. 高速缓冲存储器。简称Cache,位于主存和CPU之间,存放当前CPU经常使用的指令和数据,以便CPU快速访问。现代计算机通常集成在CPU中

在这里插入图片描述

按照存储介质分类

可分为:磁表面存储器(磁盘、磁带)、磁芯存储器半导体存储器MOS、双极型)、光存储器(光盘)

按照存取方式分类

  1. 随机存储器(RAM):存储器的任何一个单元都可以随机存取,而且存取时间与存储单元的物理位置无关,其优点是读写方便,使用灵活。常用作主存高速缓存。又分SRAMDRAM
  2. 只读存储器(ROM):只能随机读出而不能写入,信息一旦写入存储器就固定不变,即使断电,也不会丢失信息,因此通常用它存放固定不变的程序,常数和汉字字库等。
  3. 串行访问存储器:读写时需要按照物理地址先后进行,包括顺序存取存储器(SAM)(例如磁带)和直接存取存储器(DAM)(例如磁盘、光盘CD-ROM))
  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-主存-磁盘-磁带、光盘。从左向右,速度越来越慢,容量越来越大,价格越来越低。

存储系统层次结构主要体现在Cache-主存层解决CPU和主存速度不匹配的问题)和主存-辅存层解决存储系统容量问题

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

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

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

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

请添加图片描述

根据课后题总结的知识点: 

  1. 磁盘属于直接存储器,其速度介于随机存储器和顺序存储器之间。
  2.  CPU不能直接访问硬盘,需先将硬盘中的数据调入内存才能被CPU访问。
  3. 主存和辅存之间的数据调动是由硬件和操作系统共同完成的,仅对应用级程序员透明。CPU和主存可直接交换信息。
  4. 随机存取是指CPU可对存储器的任意一个存储单元中的内容随机存取,而且存取时间与存储单元的物理位置无关。
  5. EPROM,DRAM,SRAM都是随机存取方式。
  6. CD-ROM(光盘),采用串行存取方式(直接存取),注意,CD-ROM是只读型光盘存取器,不属于只读存储器ROM。

3.2 主存储器

主存储器由DRAM实现,Cache由SRAM实现,都属于易失性存储器,断电丢失信息。

ROM属于非易失性存储器

逻辑上主存由ROM和RAM组成,且二者常统一编址

3.2.1 SRAM芯片和DRAM芯片

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

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

SRAM的工作原理

静态随机存储器SRAM采用双稳态触发器来存储信息,属于是非破坏性读出

SRAM存取速度快,集成度低,功耗大,价格高,一般用作Cache

DRAM的工作原理

动态随机存储器DRAM采用栅极电容电荷来存储信息,属于是破坏性读出

DRAM存取速度慢,一般用作主存

DRAM刷新

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

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

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

在这里插入图片描述

DRAM的刷新需要注意:

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

DRAM的读写周期(待补

SRAM和DRAM的比较

核心在于存储介质的不同

在这里插入图片描述

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

在这里插入图片描述
补充DRAM地址线复用技术

在这里插入图片描述

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

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

3.2.2 只读存储器ROM

ROM的特点

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

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

ROM的类型

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

  1. 掩模式只读存储器(MROM):生产时写入,之后无法更改
  2. 一次可编程只读存储器(PROM):允许用户一次写入,之后就无法再修改
  3. EPROM:可紫外线擦除(UVEPROM),电擦除(E 2 E^2E2PROM),不能取代RAM,因为EPROM的编程次数有限,且写入时间长。
  4. Flash:U盘、SD卡。断电后可保存信息,可多次重写。由于闪存需要先擦除再写入,因此写操作比读操作慢存储元位密度比RAM高
  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 TT为存取一个字的存取周期,总线传送周期为r rr,则交叉模块数量应该大于等于m = T / r m=T/rm=T/r,才能实现流水。连续存取m mm个字所需的时间是t 1 = T + ( m − 1 ) r t_1=T+(m-1)rt1​=T+(m−1)r

请添加图片描述

 根据课后题总结的知识点:

  1. SRAM速度较快,但集成度稍低。DRAM速度慢,但集成度高。
  2. U盘采用Flash技术,它是在E^2PROM的基础上发展起来的,属于ROM的一种。由于擦写速度和性价比均可观,因此其常用作辅存。
  3. 低位交叉存储器采用流水线技术,可以在一个存取周期内连续访问4个模块,32位*4=128位。
  4. DRAM具有地址复用技术,当时SRAM没有地址复用技术。

3.3 主存与CPU连接

3.3.1 连接原理

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

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

3.3.2 主存容量的扩展

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

位扩展法

  1. 用于增加存储字长。例如8片8K*1位的芯片连接成8K*8位的存储器
  2. 地址端、片选端、读写控制端相应并联,数据端分别引出
    在这里插入图片描述

字扩展法

  1. 增加字数,位数不变
  2. 地址线、数据线、读写控制线相应并联,片选信号区分各个芯片的地址范围

线选法

n条线对应n个片选信号,效率不高
地址不连续
在这里插入图片描述

译码片选法

n条线对应2^n个片选信号
地址连续
在这里插入图片描述

字位同时扩展法

上述两种方法结合

 位是看每组有多少个芯片,然后每个芯片的位数加起来。

字是看有多少组,然后每个芯片的字数*组数。

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

根据课后题总结的知识点:

  1. 这种问题可以先算总容量:即: 4*16k*8 在于下面的对比。   16*2K*4    ,  字和位他们两个的乘数可以交换,可以从位除2再到字乘2,但是位不能比原来的低。字也不行。 
  2. 译码器的位数看的不是扩展的总的,而是每一个芯片的位数,比如4K就是2^12 , 而不是 16K :2^14。
  3.  

3.4 外部存储器

3.4.1 磁盘存储器

磁盘存储器的优点:

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

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

1.磁盘存储器

磁盘设备的组成

  1. 磁盘驱动器。核心部件是磁头组件和盘片组件。温彻斯特盘是一种可移动磁头固定盘片的硬盘存储器
  2. 磁盘控制器。硬盘存储器和主机的借口,主流的标准有IDE,SCSI,SATA等

存储区域

一块硬盘含有若干个记录面,每个记录面划分为若干磁道,每条磁道划分为若干扇区。
扇区(块)是磁盘读写的最小单位,磁盘按块存取

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

磁记录原理

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

磁盘性能指标

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

需要注意的是磁盘所有磁道记录的信息量一定是相等的,并不是圆越大信息越多。因此内圈的位密度更高
在这里插入图片描述

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

 

磁盘地址

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

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

硬盘的工作过程

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

2.磁盘阵列

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

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

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

3.4.2 固态硬盘SSD

在这里插入图片描述

补充 光盘

在这里插入图片描述

根据课后题总结的知识点 

3.5 高速缓冲存储器Cache

3.5.1 程序访问的局部性原理

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

  • 时间局部性:在最近的未来要用到的信息,很可能是现在正在使用的信息,因为程序中存在循环
  • 空间局部性:在最近的未来要用到的信息,很可能与现在正在使用的信息在存储空间上是临近的,因为指令通常顺序存放,顺序执行。数据一般也是以向量、数组等形式簇聚地存储在一起的

高速缓冲技术就是利用局部性原理,将程序中正在使用的部分数据放在一个高速的Cache中,使CPU的访存操作大多数针对Cache进行,从而提高程序的执行速度

3.5.2 Cache的基本工作原理

Cache位于存储器层次结构的顶层,通常由SRAM构成
为了方便Cache和主存交换数据,Cache和主存通常都被划分为相等的块。Cache块又称Cache行,每行由若干字节构成,块的长度称为块长。
Cache容量远小于主存的容量,因此块的数量也远少于。Cache仅保存主存中最活跃的若干块的副本,需要按照某种策略,预测CPU未来一段时间内欲访存的数据,将其装入Cache

  1. CPU发出读请求
  2. 若访存地址在Cache中命中,则将该地址转换为Cache地址,直接对Cache进行读操作
  3. 若访存地址未在Cache命中,则仍需要访问主存,并把此字所在的块一次性调入Cache。若Cache已满,则需要根据某种替换算法,替换掉某一块。整个过程由硬件实现。
  4. CPU和Cache数据交换以字为单位,Cache和主存之间数据交换以Cache块为单位

3.5.3 Cache和主存的映射方式

Cache行的信息是主存中某个块的副本,地址映射是将主存地址空间映射到Cache地址空间,即把存放在主存中的信息按照某种规则装入Cache

在这里插入图片描述

1.(16 408) 有如下C语言程序段:for(k0;k<1000;k++) {a[k]=a[k]+32;}
若数组a及变量k都是int型,占4B,数据Cache采用直接映射,数据去大小1KB,块大小16B,程序执行前Cache空,则执行该程序段过程中访问数组a的Cache缺失率?
一个Cache块可以存4个相邻的a的元素。对一个元素,要访问两次,那么8次里面只有第一次Cache未命中,缺失率1/8=12.5%

直接映射

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
  4. (15 408)假设主存地址32位,按字节编址,主存和Cache采用直接映射方式,主存块大小为4个字,每个字32位,采用回写法,则能存放4K字数据的Cache的总容量至少是?
    按照字节编址,主存块432bit = 16B,块内地址4bit,Cache块大小和主存块大小相同,也是16B
    Cache存储4K字 = 4K
    32bit = 16KB 数据,那么有1K个Cache块,块号10bit
    那么标记位 32-10-4 = 18bit
    加上1位有效位,1位回写脏位,标记要20bit
    存储标记:1K*20bit = 20Kb
    存储主存数据:16KB = 128Kb
    则Cache总容量位数至少148K

全相联映射

主存中的每一块可以装入Cache中的任何位置,每一行包含标记,指出该行取自主存中的哪一块,所以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)
在这里插入图片描述
组相联映射的地址结构:

在这里插入图片描述

  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行中,无需考虑替换算法

常用的替换算法有:随机算法、先进先出算法(FIFO)、近期最少使用算法(LRU)和最不经常使用算法(LFU)。最常考察LRU算法

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

LRU算法实现

请添加图片描述

最不经常使用算法的实现

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

3.5.5 Cache写策略

Cache中的内容是主存的副本,当对Cache中的内容进行更新时,需要选用写策略使Cache内容和主存内容保持一致

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

写命中:全写法、回写法

全写法

  1. 当CPU对Cache写命中时,将数据同时写入主存和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结构

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

3.5.- 多级Cache结构

请添加图片描述
在这里插入图片描述

根据课后题总结的知识点: 

  1. 时间局部性就是刚访问完可能还会在访问,空间局部性,可能访问其附近的内容。

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

地址转换过程中,需要先访问一次主存查询页表(页表存放在主存中),再访问主存才能取得数据,如果缺页,还要进行页面替换等…访问主存的次数增加了

按照程序的局部性原理,可以将经常访问的页对应的页表项放在Cache组成的快表中,可以明显提升效率
相应地,放在主存中的页表称为慢表
地址转换时,先查询快表,命中则无须访问慢表

快表通常采用全相联或组相联方式

在这里插入图片描述

3.6.3 段式虚拟存储器

请添加图片描述
请添加图片描述

3.6.4 段页式存储器

请添加图片描述

 

 

408 真题

(10 408)

  • Cache容量计算:包括tag位、有效位、脏位(本题不要求)、存储数据大小
  • Cache 和主存映射:直接映射,计算Cache行号。(地址结构:tag|块号|块内地址
  • Cache命中率计算

在这里插入图片描述

在这里插入图片描述

(11 408)

  • 地址结构
  • 组相连映射

在这里插入图片描述
(12 408)

  • 计算
  • DMA请求
  • 多体并行存储器

在这里插入图片描述
(14 408)

  • 地址计算

  • 访问cache、主存、磁盘
    在这里插入图片描述
    (18 408)

  • 页式存储管理

  • cache容量:数据+标记

  • TLB映射

  • 缓存用SRAM,主存用DRAM
    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一. 实验目的 1. 了解存储器的组成结构,原理和读写控制方法 2. 了解主存储器工作过程中各信号的时序关系 3. 了解挂总线的逻辑器件的特征 4. 了解和掌握总线传送的逻辑实现方法 二. 实验原理 1.基本操作:读写操作 读操作是从指定的存储单元读取信息的过程;写操作是将信息写入存储器指定的存储单元的过程 2.读写操作过程 首先要由地址总线给出地址信号,选择要进行读写操作的存储单元,然后,做写操作时,先从数据总线输入要存储在该单元的数据,通过控制总线发出相应的写使能和写控制信号,这时,数据保存在该单元中;做读操作时,只要通过总线发出相应的读控制信号。该数据就出现在总线上了 3. 总线传送 计算机的工作过程,实际上也就是信息的传送和处理过程,而信息的传送在计算机里面频度极高,采用总线传送必不可少,它可减少传输线路、节省器件、提高传送能力和可靠性。总线传送器件中大量使用的是三态门。三态门(ST门)主要用在应用于多个门输出共享数据总线,为避免多个门输出同时占用数据总线,这些门的使能信号(EN)中只允许有一个为有效电平(如低电平),由于三态门的输出是推拉式的低阻输出,且不需接上拉(负载)电阻,所以开关速度比OC门快,常用三态门作为输出缓冲器。其中74LS244是专用做挂总线用的三态门器件之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值