扫码订阅《 》或入驻星球,即可阅读文章!

GOLANG ROADMAP

阅读模式

  • 沉浸
  • 自动
  • 日常
首页
Go学习
  • Go学院

    • Go小课
    • Go视界
    • Go小考
    • Go实战
  • Go资源

    • 优质课程
    • 在线宝典
    • 资源下载
    • 帮找资源
训练营 🔥
  • Go体系课&实战训练营
  • 升值加薪陪跑训练营
Go求职
  • 求职刷题

    • 企业题库
    • 面试宝典
    • 求职面经
  • 求职服务

    • 内推互助
    • 求职助力
    • 内推公司
Go友会
  • 城市
  • 校园
推广返佣
  • 返佣排行
  • 返佣规则
  • 推广学院
实验区
  • Go周边
  • Go宝典

    • 推荐图书
    • 精品博文
  • Go开源

    • Go仓库
    • Go月刊
更多
  • 用户中心

    • 我的信息
    • 我的返佣
    • 我的消息
  • 玩转星球

    • 星球介绍
    • 星主权益
    • 吐槽专区
    • 成长记录
  • 合作交流

    • 商务合作
    • 讲师招募
    • 生态伙伴
author-avatar

GOLANG ROADMAP


首页
Go学习
  • Go学院

    • Go小课
    • Go视界
    • Go小考
    • Go实战
  • Go资源

    • 优质课程
    • 在线宝典
    • 资源下载
    • 帮找资源
训练营 🔥
  • Go体系课&实战训练营
  • 升值加薪陪跑训练营
Go求职
  • 求职刷题

    • 企业题库
    • 面试宝典
    • 求职面经
  • 求职服务

    • 内推互助
    • 求职助力
    • 内推公司
Go友会
  • 城市
  • 校园
推广返佣
  • 返佣排行
  • 返佣规则
  • 推广学院
实验区
  • Go周边
  • Go宝典

    • 推荐图书
    • 精品博文
  • Go开源

    • Go仓库
    • Go月刊
更多
  • 用户中心

    • 我的信息
    • 我的返佣
    • 我的消息
  • 玩转星球

    • 星球介绍
    • 星主权益
    • 吐槽专区
    • 成长记录
  • 合作交流

    • 商务合作
    • 讲师招募
    • 生态伙伴
  • 计算机基础系列

    • 《计算机组成原理》
  • 第一章 概论

    • 1.0 章节概要
    • 1.1 电子计算机与存储程序控制
    • 1.2 计算机的硬件组成
    • 1.3 计算机系统
    • 1.4 计算机的工作过程
  • 第二章 数据的机器层次表示

    • 2.0 章节概要
    • 2.1 数值数据的表示
    • 2.2 机器数的定点表示与浮点表示
    • 2.3 非数值数据的表示
    • 2.4 十进制数和数串的表示
    • 2.5 数据校验码
  • 第三章 指令系统

    • 3.0 章节概要
    • 3.1 指令格式
    • 3.2 寻址技术
    • 3.3 堆栈与堆栈操作
    • 3.4 指令类型
    • 3.5 指令系统的发展
  • 第四章 数值的机器运算

    • 4.0 章节概要
    • 4.1 基本算数运算的实现
    • 4.2 定点加减运算
    • 4.3 带符号数的移位和舍入操作
    • 4.4 定点乘法运算
    • 4.5 定点除法运算
    • 4.6 规格化浮点运算
    • 4.7 十进制整数的加法运算
    • 4.8 逻辑运算与实现
    • 4.9 运算器的基本组成与实例
  • 第五章 存储系统和结构

    • 5.0 章节概要
    • 5.1 存储系统的组成
    • 5.2 主存储器的组织
    • 5.3 半导体随机存储器和只读存储器
    • 5.4 主存储器的连接与控制
    • 5.5 多体交叉存储技术
    • 5.6 高速缓冲存储器
  • 第六章 中央处理器

    • 6.0 章节概要
    • 6.1 中央处理器的功能和组成
    • 6.2 控制器的组成和实现方法
    • 6.3 时序系统与控制方式
    • 6.4 微程序控制器
  • 第六章 中央处理器

    • 6.0 章节概要
    • 6.1 中央处理器的功能和组成
    • 6.2 控制器的组成和实现方法
    • 6.3 时序系统与控制方式
    • 6.4 微程序控制器
  • 第八章 外部设备

    • 8.0 章节概要
    • 8.1 外部设备概述
    • 8.2 磁介质存储器的性能和原理
    • 8.3 磁介质存储设备
    • 8.4 磁盘阵列
    • 8.5 光盘存储器
    • 8.6 键盘输入设备
    • 8.7 打印输出设备
    • 8.8 显示设备
  • 第九章 输入输出系统

    • 9.0 章节概要
    • 9.1 主机与外设的连接
    • 9.2 程序查询方式及其接口
    • 9.3 中断系统和程序中断方式
    • 9.4 DMA方式及其接口
    • 9.5 通道控制方式

扫码订阅《 》或入驻星球,即可阅读文章!

5.6 高速缓冲存储器


GOLANG ROADMAP

# 5.6.1 存储系统的层次结构

为了解决容量、速度和价格之间的矛盾,把各种不同存储容量,不同存取速度,不同价格的存储器,按一定的体系结构组织起来,使所存放的程序和数据按层次分布在各存储器中,形成一多层次的存储系统。

1.Cache-主存层次

在CPU和主存之间设置了一级容量不大,但速度很高的高速缓冲存储器(Cache),简称高速缓存。

image-20220910152134903

从整体看,Cache-主存层次的存取速度接近于Cache的存取速度,但容量是主存的,每位价格接近于主存的每位平均价格。

解决了高速度和低成本之间的矛盾。 这个层次完全由硬件实现,对用户是透明的。

2.主-辅存层次

主-辅存层次通过附加的硬件及存储管理软件来控制。

image-20220910152232171

1.高速缓冲存储器的工作原理

1.程序访问的局部性:时间局部性; 空间局部性

时间局部性:时间上的局部性指的是当前正在使用的信息很可能是后面立刻还要使用的信息,原因是程序循环(重复执行一段代码)

空间局部性:空间上的局部性是指在一个较短的时间间隔内,如果一个单元被访问,则该单元邻近的单元也可能很快被访问。原因是程序的连续存放以及顺序执行,程序中的数组操作。

2.高速缓存的工作原理:

  • Cache采用SRAM器件,构成小容量高速存储器。

  • 把程序中经常使用的部分存放在Cache中。

  • 使CPU的访存操作大多数在Cache中命中,从而使程序的执行速度大大提高。

image-20220910152525240

# 5.7.2 Cache的读写操作

1.Cache的读操作

当CPU发出读请求时,如果Cache命中,就直接对Cache进行读操作,不主存无关;如果Cache不命中,则仍需访问主存,幵把该块信息一次从主存调入Cache内。

2.Cache的写操作

当CPU发出写请求时,如果Cache命中,有可能会遇到Cache不主存中的内容不一致的问题,例如,由于CPU写Cache,把Cache某单元中的内容从X修改为X’,而主存对应单元中的内容仍然是X,没有改变,所以如果Cache命中,需要进行一定的写处理,处理的方法有:写直达法和写回法。

# 5.7.3 地址映像

高速缓冲存储器的地址映象方法:应用某种函数把主存地址映象为Cache地址,称为地址映象。

⑴全相联映象、⑵直接映象 、⑶组相联映象

1.全相联映射

主存中任何一块均可定位于Cache中的任意一块,可提高命中率,但是硬件开销增加

image-20220910152801594

地址格式:

image-20220910152844767

Cache地址格式

image-20220910160938207

主存地址格式

Cache的Tag内容:

  • 主存中与该Cache数据块对应的数据块的块地址。
  • 标记位数等于主存块号位数。

image-20220911085113675

地址转换过程:

  • 因为全相联映射的主存块可能映射在任何Cache块内,所以根据主存块号,不所有Cache块的标记进行比较,有相等的,说明命中 ,读出Cache块号访问Cache。
  • 需要一个目录表来存放映射关系,其容量为Cache 的块数,字长等于Cache块的标记、Cache块号、有效位之和。

2.直接映射

image-20220911085251564

映象规则:

image-20220911085326326

  • 式中:K为Cache的块号;I为主存的块号;2c为Cache块数。
  • Tag内容是映射到该位置的主存块的主存地址中的区号,因为比较时只需确定映射的是哪一个区中的块。

地址格式:

image-20220911085430826

Cache地址格式

image-20220911085455926

主存地址格式

image-20220911085532687

地址转换过程:

用程序中给出的主存地址中的块号找到Cache 中对应的块,读出块的Tag标记不主存地址给出的区号进行比较,按照以下几种情冴进行判断:

  • 如果与主存地址给出的区号相等,且有效位为1,命中。
  • 如果区号相等,有效位为0,失效(作废)。
  • 区号不相等,有效位为0,Cache块为空,可以直接装入。
  • 区号不相等,有效位为1,该块内容有用,写回后,替换。

3.组相联映射

image-20220911085649869

映像规则:

  • 将Cache空间分成大小相同的组,让主存中的一块直接映像装入Cache中对应组的任何一块位置上,即主存的块对应Cache的组,采用直接映像,Cache组内采用全相联映像

image-20220911085801088

  • J为Cache的组号,I为主存的块号,Q为Cache的组数

地址格式:

image-20220911085852989

Cache地址格式

image-20220911085919093

主存地址格式

Cache的目录表内容是Tag标记(主存区号‘),因为某一个Cache组中的内容可能来自任何一个区的特定块,确定了区号后,区内组号是一定的(因为块到组是直接映像),还需要确定放在Cache组内哪一块(因为组内是全相联映像)

# 5.6.4 替换算法

1.先进先出(FIFO)算法

image-20220911090039311

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

  • 每个Cache单元需要一个计数器跟踪最近访问的数据,每次访问的数据相应的计数器置为0;其余的计数器依次加1。替换最少使用的数据。

image-20220911090152525

# 5.6.5 更新策略

1.写Cache命中时,如何保持Cache不主存中的内容一致?

⑴ 写直达法:每次信息从CPU写入Cache单元中时,也要写回相应的物理内存单元中 。

⑵ 写回法:即数据暂写入Cache,幵用标志将该块注明,等需要将该块替换回到主存时,才写回主存,也称标志交换方式。

2.写Cache不命中时:

(1)按写分配法:把信息写入主存,同时将该块信息装入Cache。

(2)不按写分配法:直接更新物理内存中的值,而不把值装入Cache

  • 5.6.1 存储系统的层次结构
  • 5.7.2 Cache的读写操作
  • 5.7.3 地址映像
  • 5.6.4 替换算法
  • 5.6.5 更新策略