Cache的基本概念和原理

目录

  • 一. Cache的工作原理
  • 二. 局部性原理
  • 三. 性能分析
  • 四. 待解决的问题

\quad

一. Cache的工作原理

\quad

存储系统存在的问题

虽然双端口RAM、多模块存储器提高存储器的工作速度, 但是优化后的速度与CPU差距依然很大, 为了改善这个问题就出现了Cache, 来解决存储器与CPU速度不匹配问题
\quad

在这里插入图片描述
当我们启动微信的时候, 微信里面的数据就会从辅存复制到内存
在视频聊天的时候, "视频聊天"的相关代码会被频繁的访问
\quad

在这里插入图片描述
对于被频繁访问的数据就可以复制到Cache, CPU在调用Cache里的数据就不会有太大的速度矛盾

注:实际上,Cache被集成在CPU内部, Cache用SRAM实现,速度快,成本高, 由于SRAM集成度比较低, 注定不能做得很大, 所以Cache的容量一般都很小

\quad

二. 局部性原理

\quad
在这里插入图片描述

空间局部性:在最近的未来要用到的信息(指令和数据),很可能与现在正在使用的信息在存储空间上是邻近的(多出现在数组元素、顺序执行的指令代码)

时间局部性:在最近的未来要用到的信息,很可能是现在正在使用的信息(多出现在循环结构的指令代码)

基于局部性原理,不难想到,可以把CPU目前访问的地址“周围”的部分数据放到cache中

\quad

三. 性能分析

\quad
在这里插入图片描述
t c t_c tc表示访问Cache的时间
t m t_m tm表示访问Memory(内存)的时间
在这里插入图片描述
\quad

那如果是同时访问Cache和内存, 在Cache中找到, 就立即停止对内存的访问
在这里插入图片描述
\quad

在这里插入图片描述

\quad

四. 待解决的问题

\quad
基于局部性原理,不难想到,可以把CPU目前访问的地址“周围”的部分数据放到cache中。如何界定“周围”?

将主存的存储空间“分块”
如:每1KB为一块。主存与Cache之间以“块”为单位遂行数据交换

注:操作系统中,通常将主存中的 "一个块”也称为 —个页/页面/页框”, Cache中的“块”也称为“行”
在这里插入图片描述
4MB=22 + 220 =222
1KB=210
222÷210=212=4096

在这里插入图片描述

\quad
在这里插入图片描述
敬请期待…

\quad

王道考研计算机组成原理

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

创作活动(五十一)———编程中常见的技术难题有哪些?

#编程中常见的技术难题有哪些?# 编程世界里的三大谜题:bug、性能优化与跨平台兼容性 每个职业都有其固有的挑战和困难,对于程序员来说,这些困难往往来自于技术本身。编程,就像是一个充满谜题的世界,而程序…

大屏适配方案二——vw和vh

按照设计稿的尺寸,将px按比例计算转为vw和vh,转换公式如下 假设设计稿尺寸为 1920*1080(做之前一定问清楚 ui 设计稿的尺寸)即: 网页宽度1920px 网页高度1080px我们都知道 网页宽度100vw 网页宽度100vh所以&#xff0…

ubuntu安装docker及docker常用命令

docker里有三个部分 daemon 镜像 和 容器 我们需要了解的概念 容器 镜像 数据卷 文章目录 docker命令docker镜像相关命令docker容器相关命令数据卷ubuntu安装docker docker命令 #启动,停止,重启docker systemctl start docker systemctl stop docker s…

SpringBoot的依赖管理和自动配置

与其明天开始,不如现在行动! 文章目录 1 依赖管理机制2 自动配置机制2.1 初步理解2.2 完整流程 💎总结 1 依赖管理机制 为什么导入starter-web后所有相关依赖都会导入进来? 开发什么场景,导入什么场景启动器-spring-bo…

vscode调试pytorch分布式训练

launch.json文件如下"cwd" "${fileDirname}"表示代码调试的根目录是当前你调试的文件,也就是pretrain.py所在的目录。其他路径参数都是相对这个目录的 如果改成"cwd" "${workspaceFolder}" 表示代码调试的根目录是打开的工…

【Python百宝箱】构筑铜墙铁壁:Python 认证与授权库实战指南

Python认证与授权:构建安全、可扩展的应用 前言 在当今数字化时代,用户认证和授权是构建安全、可信任的应用程序的基石。Python生态系统提供了丰富而强大的库和工具,以支持多种身份验证和授权方案。本文将深入探讨一系列Python库&#xff0…

MyBatis框架中的5种设计模式总结

前言 MyBatis框架中使用的5种设计模式分别是:1、建造者模式(生成器模式)。2、工厂模式。3、单例模式。4、代理模式。5、适配器模式。 1、建造者模式(生成器模式) 在MyBatis环境的初始化过程中,SqlSessio…

Redis 环境搭建2

文章目录 第2关:使用 Redis 第2关:使用 Redis 本文是接着上篇文章写的第二关代码,部分人再进入第二关时不会保留第一关的配置的环境,可以通过下面一句代码进行检验。 redis-cli -p 7001 -c如果进入到了redis界面就是有环境&…

问题:batchnormal训练单个batch_size就会报错吗

Batch Normalization(批标准化)是一种深度学习中的正则化技巧,它可以改进网络的训练过程。在训练神经网络时,Batch Normalization可以帮助解决内部协变量偏移(Internal Covariate Shift)的问题。 在标准的…

pytorch serve开始-Getting started

官网链接 Getting started — PyTorch/Serve master documentation 安装TorchServe和torch-model-archiver 安装依赖 注意::对于Conda,运行Torchserve需要Python >3.8。 对于基于Debian的系统/ MacOS CPU python ./ts_scripts/install_dependencies.py 对…

【Hadoop】高可用集群搭建

知识目录 一、写在前面💕二、Zookeeper安装✨三、Hadoop配置✨四、Hadoop HA自动模式✨五、HA脚本分享✨七、结语💕 一、写在前面💕 大家好!这篇文章是我在搭建Hdfs的HA(高可用)时写下的详细笔记与感想,希望能帮助到大…

Notes数据直接在Excel中统计

大家好,才是真的好。 我希望你看过前面两篇内容《Domino REST API安装和运行》和《Domino REST API安装和运行》,因为今天我们正是使用REST API方式在Excel中查询和统计Notes数据。 不过首先你得知道一个OData协议,全名Open Data Protocol(…

五花八门客户问题(BUG) - 用好strace2

目录 前言 strace与gdb的冲突 细看strace 前言 上文通过strace trace它自个看到了strace的原理:确实是调用了ptrace函数实现的。今天我们再细看一看。 strace与gdb的冲突 既然它两底层都是用ptrace,那么一定不能同时用在同一个进程上。实例验证: [root]# strace sleep…

布隆过滤器,Redis之 bitmap,场景题【如果微博某个大V发了一条消息,怎么统计有多少人看过了】

文章目录 一、什么是 bitmap1-1、Bitmap 相关命令二、bitmap 和 set 对比2-1、数据准备2-2、内存对比2-3、性能对比三、布隆过滤器3-1、理论主要作用如何将数据放到过滤器内呢?注意事项布隆过滤器 有两个重要的参数3-2、代码实现3-3、Java中的hash函数最近面试,面试官问了一个…

Windows系统Java开发环境安装

总结一下Java软件开发工程师常见的环境的安装,仅限Windows环境。 以下下载链接均来自官网,网络条件自己克服。 目录 1. JDKJDK Oracle 官网下载地址配置系统环境变量 2. Mavenapache maven 官网地址本地仓库和中央仓库配置配置系统环境变量 3. GitGit 官…

springboot3 liquibase SQL执行失败自动回滚,及自动打tag

一&#xff1a; 自动执行回滚&#xff0c; 已执行成功的忽略&#xff0c;新sql执行失败则执行新sql文件中的回滚sql pom.xml <dependency> <groupId>org.liquibase</groupId> <artifactId>liquibase-core</artifactId> <version>4.25.0&…

【工厂方法】设计模式项目实践

前言 以采集数据处理逻辑为例&#xff0c;数据采集分为不同种类如&#xff1a;MQTT、MODBUS、HTTP等&#xff0c;不同的采集数据有不同的解析处理逻辑。但总体解析处理步骤是固定的。可以使用工厂方法设计模式简化代码&#xff0c;让代码变得更加优雅。 代码实践 抽象类 总体…

分布式环境下的session 共享-基于spring-session组件和Redis实现

1、问题概述 不是所有的项目都是单机模式的&#xff0c;当一个项目服务的局域比较广&#xff0c;用户体量比较大&#xff0c;数据量较大的时候&#xff0c;我们都会将项目部署到多台服务器上&#xff0c;这些个服务器都是分布在不同的区域&#xff0c;这样实现了项目的负载和并…

Redis有序集合对象

一.编码 有序集合的编码可以是ziplist或者skiplist。 ziplist编码的有序集合对象使用压缩列表作为底层实现&#xff0c;每一个集合元素使用紧挨在一起的两个压缩列表节点来保存。第一个节点保存元素的成员(member)&#xff0c;而第二个元素则保存元素的分值(score)。 127.0.0.…

鸿蒙app获取文本控件按钮控件_修改控件名称_按钮触发事件_提示信息显示

鸿蒙app获取文本控件按钮控件_修改控件名称_按钮触发事件_ 点击启动&#xff1a;提示信息显示 package com.example.myapplication.slice;import com.example.myapplication.ResourceTable; import ohos.aafwk.ability.AbilitySlice; import ohos.aafwk.content.Intent; impor…