计算机组成原理:存储系统【二】

在这里插入图片描述

在这里插入图片描述

🌈个人主页:godspeed_lucip
🔥 系列专栏:计算机组成与原理基础


  • 🛰️1 Cache概述
    • 🛩️1.1 局部性原理
      • 🛫1.1.1 空间局部性
      • 🛫1.1.2 时间局部性
    • 🛩️1.2 性能指标
      • 🛫1.2.1 解释
      • 🛫1.2.2 例题
      • 🛫1.2.3 待解决的问题
    • 🛩️1.3 知识总结
  • 🛰️2 Cache与主存的映射
    • 🪂2.1 知识总览
    • 🪂2.2 全相联映射(随便放)
      • 🛸2.2.1 要点
      • 🛸2.2.2 CPU访问主存
    • 🪂2.3 直接映射(只可以放在固定位置)
      • 🛸2.3.1 要点
      • 🛸2.3.2 改进
      • 🛸2.3.3 缺点
      • 🛸2.3.4 CPU访存
    • 🪂2.4 组相联映射(可放到特定分组)
      • 🛸2.4.1 要点
      • 🛸2.4.2 CPU的访存
    • 🪂2.5 总结
  • 🛰️3 Cache替换算法
    • 🚀3.1 总览
    • 🚀3.2 随机算法(RAND)
      • ✈️3.2.1 解释
      • ✈️3.2.2 缺点
      • ✈️3.2.3 优点
      • ✈️3.2.4 示例
    • 🚀3.3 先进先出(FIFO)
      • ✈️3.3.1 解释
      • ✈️3.3.2 实例
      • ✈️3.3.3 优点
      • ✈️3.3.4 缺点
    • 🚀3.4 近期最少使用算法(LRU)
      • ✈️3.4.1 解释
      • ✈️3.4.2 实例
    • 🚀3.5 最不经常使用算法(LFU)
      • ✈️3.5.1 解释
      • ✈️3.5.2 实例
      • ✈️3.5.3 缺点
    • 🚀3.6 总结
  • 🛰️4 Cache写策略
    • 🚁4.1 总览
    • 🚁4.2 写命中
      • 4.2.1 写回法
      • 4.2.2 全写法
    • 🚁4.3 写不命中
      • 🚟4.3.1 解释
      • 🚟4.3.2 写分配法
      • 🚟4.3.3 非写分配法
    • 🚁4.4 多级Cache
      • 🚟4.4.1 解释
      • 🚟4.4.2 注意
    • 🚁4.5 总结
  • 🛰️5 总结


🛰️1 Cache概述

🛩️1.1 局部性原理

🛫1.1.1 空间局部性

(1)解释
image1
(2)说明
比如说一个数组,当我们访问a[0][0]时,其接下来的a[0][1]、a[0][2]也很有可能被接着访问,这就是局部性原理
image2
而对于指令也是一样,一个程序中的指令通常是被顺序存放的,CPU访问了一条指令后,对于其周围的指令是很有可能接着去访问的

🛫1.1.2 时间局部性

(1)解释
image3
(2)说明
对于一条循环指令来说(for(int i=1,i<10,i++)),i=1的加法,在未来的i=2的时候也要用到。这就是时间局部性

3. 基于局部性原理,可以将CPU目前访问的地址“周围”的部分数据放进Cache中,这样可以大幅提升CPU的运行速度

🛩️1.2 性能指标

🛫1.2.1 解释

image4
上述的命中率是CPU分别在Cache、主存中找数据的情况,CPU也可以同时在Cache、主存中寻找数据,此时的平均访问时间就是
image5

🛫1.2.2 例题

image6

🛫1.2.3 待解决的问题

Cache是取目前访问的地址的“周围”的数据,那么如何界定周围?
image7
image8
注意:
image9

🛩️1.3 知识总结

image10

🛰️2 Cache与主存的映射

🪂2.1 知识总览

解决Cache与主存的数据块的对应关系的问题image1

🪂2.2 全相联映射(随便放)

🛸2.2.1 要点

(1)主存块可以放在Cache的任何一块上
(2)Cache中的每块都设置了一个标记位记录该主存块的地址,对于未存放数据的Cache块标记位已全0展示
(3)但是地址位为全0的主存块实际上是有资源的,所以还需要设置一个有效位(1代表有数据,0代表无数据)

🛸2.2.2 CPU访问主存

(1)前提:主存地址空间为256MB,每块行长为64kb,则:

image2
假设CPU访问地址为:1…1101 001110
image3

🪂2.3 直接映射(只可以放在固定位置)

🛸2.3.1 要点

(1)使主存地址对Cache内存块个数取余,得到的数字就是该主存块应该存放的Cache块编号
image4
(2)设置了标记位与有效位,与全相联映射一致。

🛸2.3.2 改进

考虑到该方法需要将主存地址对Cache总块数取余,即地址的后三位实际上对应的是Cache块的编号,那么在Cache的标记位上,可以直接截取主存地址的前19位,因为后3位分别为000-111。
image5

🛸2.3.3 缺点

对于一个特定的主存块来说,假如其对应的Cache内存块没有空间,那么即使其他Cache块有空间,该主存块也不可以放到有空间的Cache块中去。

🛸2.3.4 CPU访存

image6

🪂2.4 组相联映射(可放到特定分组)

🛸2.4.1 要点

(1)将Cache块分组,主存块需要对组数进行取余,根据结果决定改主存块要放在那个Cache块组中。
(2)设定标记位与有效位
(3)标记位的改进方法与直接映射类似,对于一个块数为8的Cache,对地址位为22位的主存地址只需要保存前20位就可以了。(222/22)

🛸2.4.2 CPU的访存

image7

🪂2.5 总结

🛰️3 Cache替换算法

🚀3.1 总览

image1

🚀3.2 随机算法(RAND)

✈️3.2.1 解释

image2

✈️3.2.2 缺点

image3

✈️3.2.3 优点

实现简单,原理简单

✈️3.2.4 示例

image4
注意:当CPU在Cache中未访问到目标数据而去主存寻找时,找到的数据要立即放入Cache中去

🚀3.3 先进先出(FIFO)

✈️3.3.1 解释

image5

✈️3.3.2 实例

image6

✈️3.3.3 优点

image7

✈️3.3.4 缺点

image8
且容易出现抖动现象
image9

🚀3.4 近期最少使用算法(LRU)

✈️3.4.1 解释

image10
image11
对于第一条,我们当然也可以使其加1,但是不加1其实也可以达到效果。

✈️3.4.2 实例

image12

🚀3.5 最不经常使用算法(LFU)

✈️3.5.1 解释

image13

✈️3.5.2 实例

image14

✈️3.5.3 缺点

image15

🚀3.6 总结

image16
LRU的Cache的命中率最大,效果最好

🛰️4 Cache写策略

🚁4.1 总览

image1

🚁4.2 写命中

解释

CPU要对一个地址进行写操作,而且这个地址已经被调入了Cache,发生了命中的情况

4.2.1 写回法

  1. 解释

image2
这样做避免了每次写都将数据写回主存,节省了一些写的时间

  1. 注意

为了让CPU知道Cache是否发生了写操作,还需要对每个Cache块增加一个“脏位”,该位数值为1代表已经修改,为0代表没有修改

  1. 示意图

image3

缺点

存在数据不一致的隐患

4.2.2 全写法

  1. 解释

image4

  1. 注意

为了增加CPU将数据写入主存的速度,可以增加一个由SRAM(速度较快)实现的缓冲队列,CPU先将数据放入缓冲队列,当CPU暂时不再进行写操作时,缓冲队列在专门的控制电路下将数据写入主存

  1. 示意图

image5

  1. 缺点

image6

🚁4.3 写不命中

🚟4.3.1 解释

当CPU需要对一个地址进行写操作,且这个数据不在Cache中的时候,CPU回将数据调入Cache中

🚟4.3.2 写分配法

  1. 解释
    image7

  2. 示意图
    image8

🚟4.3.3 非写分配法

  1. 解释
    image9

  2. 也就是说,当不命中时,CPU对某个地址进行写操作时不讲数据调入Cache,只有在进行读操作时才将数据调入Cache。因为具备全写法中直接对主存进行修改的特性,所以通常搭配全写法使用

  3. 示意图
    image10

🚁4.4 多级Cache

🚟4.4.1 解释

image11

🚟4.4.2 注意

低级Cache中保存的是主存的副本,而高级Cache保存的是低级Cache的副本,所以多级Cache中也存在数据同步的问题。一般来说:
image12

🚁4.5 总结

image13

🛰️5 总结

计算机组成原理如一座精密的交响乐团,微观中展现着电子的舞蹈,宏观中奏响着科技的交响曲。

它拆解复杂问题为简单指令,通过微处理器的默契协作,创造出无尽可能。

存储单元如记忆的灯塔,指引信息的航程。

总线是信息的大道,连接着各个功能模块,使计算机成为无比高效的智慧之器。

在计算机组成原理的魔法指导下,世界逐渐变得更加智能、便捷、创新。

渴望挑战计算机组成与原理的学习路径和掌握进阶技术?不妨点击下方链接,一同探讨更多CO的奇迹吧。我们推出了引领趋势的💻CO专栏:《计算机组成原理基础》 ,旨在深度探索CO的实际应用和创新。🌐🔍

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/387851.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux系统zabbix自动发现主机

自动发现主机 新的主机浏览器配置创建发现规则创建发现主机后动作 新的主机 rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm# yum clean allyum install zabbix-agentvim /etc/zabbix/zabbix_agentd.conf Server10.12.153.1…

SpringBoot+Tess4J实现本地与远程图片的文字识别

Spring Boot应用程序里集成Tess4J来实现OCR&#xff08;光学字符识别&#xff09;&#xff0c;以识别出本地和远程图片中的文字 一、添加依赖 <dependency><groupId>net.sourceforge.tess4j</groupId><artifactId>tess4j</artifactId><vers…

Linux信号集与信号集相关函数

阻塞信号集和未决信号集&#xff1a; 例如&#xff1a;当进程收到SIGINT信号后&#xff0c;首先被保留在未决信号集中&#xff0c;此时标识位为1&#xff0c;当这个信号被处理之前&#xff0c;先检查阻塞信号集中对应的编号的位上的标识是否为1&#xff1b; 为1表示该信号被当…

ChatGPT高效提问—prompt实践(法律助手)

ChatGPT高效提问—prompt实践&#xff08;法律助手&#xff09; ​ 作为现代法治国家的公民&#xff0c;无论我们是否从事法律相关的工作&#xff0c;都难免会遇到法律问题&#xff0c;那么如何争取自身合法利益最大化呢&#xff1f;很多人大概率会第一时间查询相关的法律知识…

Java奇缘:林浩然与杨凌芸的数学冒险记

Java奇缘&#xff1a;林浩然与杨凌芸的数学冒险记 Java Adventure: The Mathematical Odyssey of Lin Haoran and Yang Lingyun 在Java编程世界的某一个角落&#xff0c;住着两位才华横溢的程序员——林浩然和杨凌芸。林浩然&#xff0c;人称“算法大侠”&#xff0c;对Java Ma…

C语言中整数除法的特性

目录 介绍 解决方法 例1 例2 介绍 在 C 语言中&#xff0c;整数除法有一个特性&#xff0c;即它会对结果进行截断而不是四舍五入。这意味着无论结果是正数还是负数&#xff0c;除法的结果都将向零取整。这也就是说&#xff0c;C 语言中的整数除法会直接截断小数部分&#x…

Spring Boot 笔记 021 项目部署

1.1 引入坐标&#xff0c;并双击package打包成jar包 1.2 在服务器上运行jar包 1.3 使用postman测试 2.1 运行配置 2.1.1 命令更改端口 java -jar big-event-1.0-SNAPSHOT.jar --server.port7777 2.1.2 环境变量更新&#xff08;略&#xff09; 2.1.3 外部配置文件&#xff0c…

LeetCode:118.杨辉三角

118. 杨辉三角 - 力扣&#xff08;LeetCode&#xff09;&#xff0c; 前言&#xff1a;平平无奇的实现&#xff0c;数组理清了的话就很easy&#xff0c;值得说的是给定的参数 int* returnSize, int** returnColumnSizes 是什么意思&#xff0c;还得熟悉适应&#xff0c;博主…

深入了解pip和conda:高效Python环境管理的必备指南

pip相关命令: 更新包之前最好更新一下pip&#xff0c;因为更新其他包底层是依赖 pip pip show pippython -m pip install --upgrade pippython更新包&#xff1a; - ​ pip install --upgrade 包 pip install pandas- ​ pip install --upgrade 包名称版本号查看那些包需要更…

【leetcode热题100】交错字符串

给定三个字符串 s1、s2、s3&#xff0c;请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下&#xff0c;其中每个字符串都会被分割成若干 非空 子字符串&#xff1a; s s1 s2 ... snt t1 t2 ... tm|n - m| < 1交错 是 s1 …

CAN通讯协议学习

介绍 它是一种异步通讯&#xff0c;can_high和can_low两条线利用的是电位差传输信号&#xff0c;抗干扰能力强&#xff0c;但是必须要有can控制器如TJA1050&#xff08;我的开发板&#xff09; 当 CAN 节点需要发送数据时&#xff0c;控制器把要发送的二进制编码通过 CAN_Tx 线…

牛客JZ 36二叉搜索树与双向链表

描述 输入一棵二叉搜索树&#xff0c;将该二叉搜索树转换成一个排序的双向链表。如下图所示 数据范围&#xff1a;输入二叉树的节点数 0≤n≤10000≤n≤1000&#xff0c;二叉树中每个节点的值 0≤val≤10000≤val≤1000 要求&#xff1a;空间复杂度O(1)&#xff08;即在原树上…

计算机毕业设计分享-SSM实验室耗材管理系统 13205(赠送源码数据库)JAVA、PHP,node.js,C++、python,大屏数据可视化等

SSM实验室耗材管理系统 摘 要 本课题研究的实验室耗材管理系统&#xff0c;主要功能模块包括用户管理、耗材管理、入库记录、出库记录、报废登记、供应商管理、耗材类别、实验室管理等&#xff0c;采取面对对象的开发模式进行软件的开发和硬体的架设&#xff0c;能很好的满足实…

CSS设置盒子阴影

语法 box-shadow: *h-shadow v-shadow blur spread color* inset; 注释: box-shadow向框添加一个或多个阴影. 该属性是由逗号分隔的阴影列表,每个阴影由2-4个长度值、可选的颜色值及可选的inset关键词来规定。省略长度的值是0。 外阴影 a、给元素右边框和下边框加外阴影——把…

Git基础使用

Git 要想了解Git&#xff0c;首先需要我们了解一下VCS——版本控制系统&#xff08;version control system&#xff09; VCS 版本控制是一种记录一个或若干文件内容变化&#xff0c;以便将来查阅特定版本修订情况的系统。版本控制系统不仅可以应用于软件源代码的文本文件&a…

【机器学习案例3】从科学论文图片中提取标题、作者和摘要【含源码】

在这个项目中,我的目标是从科学论文图片中提取某些部分(标题、作者和摘要)。预期提取部分是科学论文中常见的部分,例如标题、摘要和作者。输入与最终结果。我的输入是将第一页纸转换成图像。最终结果是一个 txt 文件,其中包含标题、作者和摘要部分,如下图1和图2所示。我将…

《区块链公链数据分析简易速速上手小册》第9章:区块链数据工具和资源(2024 最新版)

文章目录 9.1 数据获取工具9.1.1 基础知识9.1.2 重点案例&#xff1a;使用web3.py获取以太坊交易数据准备工作实现步骤步骤1: 连接到以太坊网络步骤2: 获取特定地址的交易数据 扩展应用结语 9.1.3 拓展案例 1&#xff1a;使用 Etherscan API 获取交易数据准备工作实现步骤步骤1…

【AI视野·今日CV 计算机视觉论文速览 第295期】Tue, 23 Jan 2024

AI视野今日CS.CV 计算机视觉论文速览 Tue, 23 Jan 2024 Totally 134 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computer Vision Papers Exploring Simple Open-Vocabulary Semantic Segmentation Authors Zihang Lai开放词汇语义分割模型旨在从一组任意开放词…

专业140+总分420+东北大学841通信专业基础考研经验东大电子信息与通信工程,真题,大纲,参考书。

今年考研顺利上岸&#xff0c;被东北大学通信工程录取&#xff0c;其中专业课841通信专业基础140&#xff0c;数二140&#xff0c;总分420&#xff0c;整体每门课都还是比较均衡&#xff0c;刚开始考研前也和大家一样&#xff0c;焦虑&#xff0c;紧张&#xff0c;面对考研怕失…

本地存储云存储使用量对比

目录 块存储 文件存储 对象存储 使用传统式存储&#xff0c;需要购买新的存储系统、存储容量&#xff0c;还需要为未来的发展预留一部分容量&#xff0c;同时未来如果业务量规模扩大&#xff0c;还可能需要在数据中心托管并维护总容量&#xff0c;这都将大大增加成本。 使用…