文章目录

  • 3.1 存储器概述
    • 3.1.1 存储器分类
      • 按照在计算机中的作用(层次)分类
      • 按照存储介质分类
      • 按照存取方式分类
      • 按照信息的可保存性分类
    • 3.1.2 存储器性能指标
    • 3.1.3 多级层次的存储系统
  • 3.2 主存储器
    • 3.2.1 SRAM芯片和DRAM芯片
      • SRAM的工作原理
      • DRAM的工作原理
      • DRAM刷新
      • DRAM的读写周期(待补
      • SRAM和DRAM的比较
      • 存储器芯片的内部结构(待补充
    • 3.2.2 只读存储器ROM
      • ROM的特点
      • ROM的类型
      • 重要ROM
    • 3.2.3 主存储器的基本组成
    • 3.2.4 多模块存储器
      • 多体并行存储器
        • 单体多字存储器
      • 多体并行存储器
  • 3.3 主存与CPU连接
    • 3.3.1 连接原理
    • 3.3.2 主存容量的扩展
      • 位扩展法
      • 字扩展法
        • 线选法
        • 译码片选法
      • 字位同时扩展法
    • 存储芯片的地址分配和片选
  • 3.4 外部存储器
    • 3.4.1 磁盘存储器
      • 1.磁盘存储器
        • 磁盘设备的组成
          • 存储区域
        • 磁记录原理
        • 磁盘性能指标
          • 磁盘地址
        • 硬盘的工作过程
      • 2.磁盘阵列
    • 3.4.2 固态硬盘SSD
    • 补充 光盘
  • 3.5 高速缓冲存储器Cache
    • 3.5.1 程序访问的局部性原理
    • 3.5.2 Cache的基本工作原理
    • 3.5.3 Cache和主存的映射方式
      • 直接映射
      • 全相联映射
      • 组相联映射
    • 3.5.4 Cache中主存块的替换算法
      • LRU算法实现
      • 最不经常使用算法的实现
    • 3.5.5 Cache写策略
      • 写命中:全写法、回写法
        • 全写法
        • 回写法
      • 写未命中:写分配法、非写分配法
        • 写分配法
        • 非写分配法
    • 3.5.- 分离的Cache结构
    • 3.5.- 多级Cache结构
  • 3.6 虚拟存储器
    • 3.6.1 虚拟存储器的基本概念
    • 3.6.2 页式虚拟存储器
      • 1. 页表
      • 2. 快表(TLB)(TODO
    • 3.6.3 段式虚拟存储器
    • 3.6.4 段页式存储器
  • 408 真题

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

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

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的比较

核心在于存储介质的不同

SRAM DRAM
存储信息 触发器 电容
读出是否破坏 非破坏性读出 破坏性读出
是否需要刷新 不需要刷新 需要刷新
送行列地址 同时送 分两次(地址线复用)
运行速度
集成度
存储成本
主要用途 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^2 E2PROM)
  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 T T为存取一个字的存取周期,总线传送周期为 r r r,则交叉模块数量应该大于等于 m = T / r m=T/r m=T/r,才能实现流水。连续存取 m m m个字所需的时间是 t 1 = T + ( m − 1 ) r t_1=T+(m-1)r t1​=T+(m−1)r

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条线对应 n n n个片选信号,效率不高
地址不连续

译码片选法

n n n条线对应 2 n 2^n 2n个片选信号
地址连续

字位同时扩展法

上述两种方法结合

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

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 r r转/ s s s,每条磁道容量 N N N字节,那么数据传输率为 D r = r N D_r=rN Dr​=rN
磁盘地址

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

驱动器号 柱面号(磁道号) 盘面号 扇区号

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

驱动器号(2) 柱面号(磁道号)(8) 盘面号(4) 扇区号(4)

硬盘的工作过程

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

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中的唯一位置,如果这个位置已经存在内容,那么会被无条件地替换出去
直接映射的块冲突概率最高,空间利用率最低
直接映射的地址结构:

标记 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)

组相联映射的地址结构:

标记 Cache组号 块内地址

  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结构


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

【408笔记】计算机组成原理 第三章 存储系统相关推荐

  1. (计算机组成原理)第三章存储系统-第六节4:Cache的写策略(写回法和全写法,写分配法和非写分配法)

    文章目录 一:写命中 (1)写回法(write-back) (2)全写法(write-through) 二:写不命中 (1)写分配法(write-allocate) (2)非写分配法(not-writ ...

  2. 计算机组成原理三种译码方式,计算机组成原理第三章存储系统

    第三章存储系统 3.1存储器的构成 二.六管静态MOS存储单元线路 存储机理:利用双稳态触发器保存信息 T1通.T2止,存0 T1止.T2通.存1 分析:1保持信息:不打扰,不送地址选通信号:2读出: ...

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

    第三章属于考察重点,涉及到存储器的扩展分类与cache的连接等知识点,不仅复杂而且很容易出错,属于重点内容. 3.1 存储器概述 存储器种类非常多,可以根据不同的角度进行分类. 按照在计算机中的作用分 ...

  4. (计算机组成原理)第三章存储系统-第三节1:主存储器和CPU的连接

    专栏目录首页:[专栏必读]王道考研408计算机组成原理万字笔记.题目题型总结.注意事项.目录导航和思维导图 文章目录 本节思维导图 一:单块存储芯片与CPU的连接 二:多块存储芯片与CPU的连接 (1 ...

  5. (王道计算机组成原理)第三章存储系统-第二节2:SRAM和DRAM芯片以及DRAM的属性和地址线复用技术

    王道考研复习指导获取:密码7281 专栏目录首页:[专栏必读]王道考研408计算机组成原理万字笔记.题目题型总结.注意事项.目录导航和思维导图 文章目录 本节思维导图 一:存储器元件不同导致的特性差异 ...

  6. 计算机组成原理 第三章存储系统 知识点

    第三章. 存储器层次机构 基础概念 存储元件:用一个具有两种稳定状态,并且在一定条件下状态可相互转换的物理器件来表示二进制数码0和1,这种器件称为存储元件. 存储单元:由若干个存储元组成一个存储单元. ...

  7. 计算机组成原理——第三章存储系统(上)

    提示:吾与春风皆过客,君携秋水揽星河 文章目录 前言 3.1 存储系统基本概念 3.2.1 主存储器的基本组成 3.2.2 SRAM DRAM\ 3.2.3 只读存储器ROM 3.3.1 主存储器与C ...

  8. 3 计算机组成原理第三章 存储系统 主存简单模型及寻址 半导体寄存器 存储器分类 主存与CPU连接 双口RAM和多模块寄存器

    文章目录 1 主存简单模型及寻址的概念 1.1 主存储器 1.1.1 存储器芯片的基本结构 1.1.2 寻址 2 半导体存储器 2.1 半导体随机存取存储器 2.1.1 DRAM的刷新 2.1.2 S ...

  9. (计算机组成原理)第三章存储系统-第七节2:页式/段式虚拟存储器

    文章目录 一:页式虚拟存储器 二:段式虚拟存储器 三:段页式虚拟存储器 四:虚拟存储器与Cache比较 (1)相同 (2)不同 一:页式虚拟存储器 我们知道,运行一个程序时,需要将该程序调入主存,然后 ...

最新文章

  1. linux shell脚本字符串连接符,学习Linux shell脚本中连接字符串的方法
  2. 新晋图灵奖得主Jeff Ullman受质疑,反对者:他享受了不该享受的荣誉
  3. STM32那点事(3)_中断(下)
  4. 关于CSS中定位的个人理解
  5. 【英语学习】【医学】有机化学系统 (1)
  6. 必看干货!五个步骤帮您成功实施IT SLA
  7. java dbaResult_资深DBA经验总结 Oracle数据库最佳实践 PDF 下载
  8. 金蝶K3cloud 7.6注册教程
  9. 云计算基础设施的定义与介绍
  10. 【反欺诈场景剖析】虚假账号的产生和流转
  11. 打开SharePoint时遇到“Server error: http://go.microsoft.com/fwlink?LinkID=96177”
  12. 基于信用卡业务测试数据支持解决方案
  13. 【中科院信工所】-2021考研经验-记录一段每天都在思考如何学习的日子
  14. 【实战技能】软件工程师与AI工程师的区别是什么?
  15. 追寻红色记忆、晋国文明之思考毕业季研学营
  16. fer2013的csv文件转换为ImageNet格式(以图片格式保存在各自类别的文件夹中)
  17. java 使用sourceforge.pinyin4j查询汉字拼音
  18. numpy 对矩阵,数组的操作
  19. Three.js快速入门
  20. js IP地址正则校验

热门文章

  1. 熊大UWB系列教程二:KEIL软件环境搭建以及程序下载
  2. python中func自定义函数_Python函数之自定义函数作用域闭包
  3. 什么是VLAN?如何配置?VLAN间路由又是怎样的?
  4. Android Killer没有检测到Java SDK安装环境(已解决)
  5. MAGIX Video Pro X12中文版
  6. 无许可的开源软件可以使用吗?
  7. 【Java秒杀方案】11.功能开发-【商品秒杀及优化】防止超卖 接口优化(redis预减库存,内存标记减少redis访问,RabbitMQ异步下单) 安全优化(隐藏秒杀接口,验证码,接口防刷)
  8. 马斯克宣布将卸任推特CEO:转战技术岗位 ;王坚正式回归阿里云;科大讯飞否认星火大模型套壳ChatGPT|极客头条...
  9. Element UI 分页问题 this.pageSizes.map is not a function
  10. 数据管理技术发展的三个阶段