当前位置: 首页 > news >正文

07《缓存》计算机组成与体系结构 系列课

目录

深入了解缓存内存

缓存的重要性

游戏中的存储需求与主内存

虚拟内存和按需分页

现代系统中的多级缓存

缓存级别的大小与速度

缓存相关的术语

缓存命中与未命中

页面命中与缺页

局部性原理

结语


深入了解缓存内存

大家好,欢迎来到今天的课程。上节课,我们学习了06《内存接口:解答往年试题》计算机组成与体系结构 系列课。今天我们将深入了解缓存内存。但在深入之前,我们先来理解一下它的重要性。现在让我们开始学习吧。

缓存的重要性

在之前的讨论中,当我们谈到命中率或命中比时,我们看到在一个包含100条指令的程序代码中,有80条被带入主存储器。你可能会想,为什么我们不直接将整个100条指令的代码都放入内存中呢?让我通过一个更现实的例子来说明这个问题。

游戏中的存储需求与主内存

  • 游戏示例:GTA 5、使命召唤:无限战争、现代战争2019重启版、杀手2(2018年重启版)。
  • 存储空间:这些游戏的存储需求几乎达到了100GB,现代战争2019重启版甚至需要超过200GB的存储空间。
  • 主内存需求
    • GTA 5:4GB
    • 使命召唤系列(无限战争/现代战争):8GB
    • 杀手2:16GB

虚拟内存和按需分页

这是因为我们的操作系统提供了虚拟内存和按需分页的概念。当我们在玩这些游戏或者从技术上讲,当处理器正在执行这些游戏的代码时,它们并不需要一次性地加载全部100GB的代码。这就是它的美妙之处。

正因为如此,即使主内存相对较小,我们仍然可以毫无问题地运行这些游戏。

为了更好地理解这个概念,我们用了仅100条指令的代码段作为例子。

现代系统中的多级缓存

现在让我们谈谈缓存。

为了便于理解,在之前的讨论中我提到缓存内存作为一个单一单元。

但准确地说,现代系统通常有多级缓存。如今的系统架构中,一般使用三级缓存:L1、L2 和 L3 缓存。

  • L1缓存:自诞生以来就内置于处理器本身。
  • L2缓存:最初集成在主板上,但现在也成为了处理器的一部分。
  • L3缓存:嵌入在处理器中,由处理器的所有不同核心共享。

随着技术的进步,我们见证了多核处理器的兴起,如双核、四核乃至八核等。这些术语描述了微处理器内部核心的数量,是现代微处理器分类中的一个重要方面。在计算机体系结构中,这样的设计使得处理器能够同时处理多个任务或线程,从而显著提升了计算效率和性能。

自L1缓存诞生以来,它就一直内置于处理器本身之中,作为最接近CPU核心的数据存储区域,提供了最快的访问速度。随着技术的发展,L2缓存被引入以进一步提升性能。最初,L2缓存通常是安装在主板上的独立组件;然而,随着时间推移,为了提高效率,L2缓存也逐渐集成到了处理器内部。

如今,在多核处理器架构中,每个核心都拥有自己的L1和L2缓存,这有助于减少数据访问延迟并提高单个核心的工作效率。

至于L3缓存,它同样嵌入在处理器芯片之内,但与L1和L2不同的是,L3缓存由所有核心共同使用。这种共享的设计,旨在优化跨核心的数据交换,对于需要频繁访问同一数据集的应用程序来说尤为重要。

通过了解这些缓存级别及其作用,我们可以更好地理解现代处理器是如何通过多层次缓存系统,来实现高效数据管理和加速计算过程的。

缓存级别的大小与速度

  • L1缓存:最小但最快。
  • L2缓存:用于存储访问频率次高、但因空间限制而无法纳入L1缓存的数据。
  • L3缓存:最大,被称为共享缓存。

在大小方面,L1是最小的,但它也是所有缓存中最快的。 L2缓存紧随其后,用来存储那些访问频率次高、但因空间限制而无法纳入L1缓存的数据。 最后,L3缓存是最大的,也被称为共享缓存。

希望你现在对不同级别的缓存有了清晰的理解。 在之后的讨论中,为了简化起见,我们大多假设只有一个缓存。 不过,在解释与缓存级别相关的数值问题时,我会提供各级别的详细说明。

缓存相关的术语

现在让我们了解一些与缓存相关的术语。

缓存命中与未命中

  • 缓存命中:如果处理器能够在缓存中找到所需的信息,所需的时间称为命中延迟。
  • 标签目录:用来确定所需信息是否存在于缓存中的一种特定数据结构。
  • 缓存未命中:如果信息不在缓存中,则处理器将在下一级内存即主内存中寻找该信息,并将其带回。这段时间总称作未命中延迟。

第一个术语是缓存命中。 在执行过程中,如果处理器能够在缓存中找到所需的信息,我们就称之为缓存命中。 这个过程所需的时间称为命中延迟。 这里,处理器使用一种特定的数据结构——标签目录【Tag Directory】,来确定所需信息是否存在于缓存中。 如果信息不在缓存中,也就是说信息缺失,我们称之为缓存未命中。 在这种情况下,正如前面所讨论的,处理器将在下一级内存,即主内存中寻找该信息,并将其带回。 同时,也会将信息放置在缓存中。 这段时间总称作未命中延迟

页面命中与缺页

  • 页面命中:如果信息在主内存中找到。
  • 缺页:如果信息也不在主内存中,这种情况称为缺页。
  • 缺页服务时间:操作系统会在辅助存储器中查找信息,并将其带回主内存的过程所需的时间。

顺便提一下,如果信息也不在主内存中,这种情况称为缺页。 如果找到了信息,我们称之为页面命中。 在缺页的情况下,操作系统,作为管理主内存和辅助存储器之间通信的角色,会在层次结构的最后一层,也就是辅助存储器中查找信息,并将其带回主内存。 整个过程称为缺页服务,完成这一过程所需的时间称为缺页服务时间

我们已经知道,相对于其他数据而言,访问频率极高的信息通常会被保留在缓存中。 这种根据访问频率优先化主内存部分以加载到缓存中的做法,是基于局部性原理

局部性原理

  • 空间局部性:如果处理器引用了某个内存位置,那么附近的位置在未来很可能会被引用。
  • 时间局部性:如果某个内存位置被引用过,那么它很可能在未来再次被引用。

简单来说,有两种方法可以帮助处理器决定应该将主内存中的哪些数据放在缓存中。 第一种方法基于空间局部性。 这意味着在某个时刻,如果处理器引用了某个内存位置,那么附近的位置在未来很可能会被引用。 第二种方法基于时间局部性。 这意味着如果某个内存位置被引用过,那么它很可能在未来再次被引用。 这个知识点,在研究缓存替换策略时会更加清晰。

结语

好了,这就是本次课程的内容。

我想既然我们已经学到了缓存内存的组织方式,接下来探讨不同的缓存映射技术以及更深入地理解缓存和主内存之间的交互就会更容易些。

期待下次再见。谢谢大家阅读。

相关文章:

07《缓存》计算机组成与体系结构 系列课

目录 深入了解缓存内存 缓存的重要性 游戏中的存储需求与主内存 虚拟内存和按需分页 现代系统中的多级缓存 缓存级别的大小与速度 缓存相关的术语 缓存命中与未命中 页面命中与缺页 局部性原理 结语 深入了解缓存内存 大家好,欢迎来到今天的课程。上节课…...

Java个人博客系统项目文档

项目名称 Java个人博客系统 项目概述 该博客系统是一个多功能的Java应用程序。该系统支持用户发布新文章、浏览他人文章、管理个人文章收藏和删除不再需要的文章。通过该博客系统,用户可以享受一个安全、便捷的在线写作和阅读体验。 运行环境 编程语言&#xff1…...

如何手动设置ubuntu服务器的ip、子网掩码、网关、DNS

在 Ubuntu 服务器上手动设置 IP 地址、子网掩码、网关和 DNS,通常有两种方式:使用传统的 ifconfig 命令和配置文件,或者使用现代的 netplan 配置方式(对于 Ubuntu 17.10 及以后版本,netplan 是默认的网络配置工具&…...

SVN clean up失效的一种解决办法

1、进入.svn 2、进入wc.db数据库 sqlite3.exe wc.db sqlite> select * from WC_LOCK; 若有输出则可采用下面的方式来清理 a、delete from WC_LOCK; b、如果删除失败就采用丢弃并重新创建WC_LOCK表的方式清理 drop table WC_LOCK; create table WC_LOCK ( wc_id INTEGER…...

S4 UPA of AA :新资产会计概览

通用并行会计(Universal Parallel Accounting)可以支持每个独立的分类账与其他模块集成,UPA主要是为了支持平行评估、多货币类型、财务合并、多准则财务报告的复杂业务需求 在ML层面UPA允许根据不同的分类账规则对物料进行评估,并…...

第30天:安全开发-JS 应用NodeJS 指南原型链污染Express 框架功能实现审计0

时间轴: 演示案例: 环境搭建-NodeJS-解析安装&库安装 功能实现-NodeJS-数据库&文件&执行 安全问题-NodeJS-注入&RCE&原型链 案例分析-NodeJS-CTF 题目&源码审计 开发指南-NodeJS-安全 SecGuide 项目、 环境搭建-NodeJ…...

关于单片机的原理与应用!

成长路上不孤单😊😊😊😊😊😊 【14后😊///计算机爱好者😊///目前正在学习C😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于单片…...

什么是节点嵌入向量

节点嵌入向量是图神经网络中对节点信息进行表示的一种方式。它是将节点的各种属性、特征以及其在图结构中的位置关系等信息,通过某种数学变换映射到一个低维向量空间中的向量。 在图神经网络中,节点通常具有多种属性,如在社交网络中用户节点可…...

青海摇摇了3天,技术退步明显.......

最近快手上的青海摇招聘活动非常火热,我已经在思考是否备战张诗尧的秋招活动。开个玩笑正片开始: 先说一下自己的情况,大专生,20年通过校招进入杭州某软件公司,干了接近4年的功能测试,今年年初&#xff0c…...

url_launcher三方包的用法

文章目录 1 概念介绍2 使用方法3 示例代码我们在上一章回中介绍了包管理相关的内容,本章回中将介绍如何使用url_launcher包.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在这里介绍url_launcher包主要用来打开Url中的内容,Url可以是电话号码,网址,邮箱等内容。如…...

Python 【图像分类】之 PyTorch 进行猫狗分类功能的实现(Swanlab训练可视化/ Gradio 实现猫狗分类 Demo)

Python 【图像分类】之 PyTorch 进行猫狗分类功能的实现(Swanlab训练可视化/ Gradio 实现猫狗分类 Demo) 目录 Python 【图像分类】之 PyTorch 进行猫狗分类功能的实现(Swanlab训练可视化/ Gradio 实现猫狗分类 Demo) 一、简单介绍 二、PyTorch 三、CNN 1、神经网络 2、卷…...

springboot371高校实习管理系统(论文+源码)_kaic

毕 业 设 计(论 文) 题目:高校实习管理系统的设计与实现 摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解…...

Elasticsearch面试内容整理-面试注意事项

在准备 Elasticsearch 面试时,除了掌握技术知识外,还需要注意如何有效展示你的技能和经验。以下是一些 Elasticsearch 面试的注意事项和建议: 掌握基础概念 在面试中,面试官通常会首先评估你对 Elasticsearch 基础概念的理解,包括集群架构、分片、副本、节点类型等。这些是…...

Python学习第十五天--魔术方法

魔法方法就是可以给你的类增加魔力的特殊方法,它们总被双下划线所包围,像这种格式:"__方法名__",这些方法很强大,充满魔力,可以让你实现很多功能。 使用dir()查看类的所有属性和方法 class A:passprint(di…...

计算机的错误计算(一百七十二)

摘要 探讨 MATLAB 对于算式 的计算误差。 例1. 在 MATLAB 中计算 的值。 直接贴图吧: 这样,MATLAB 的输出中只有3位正确数字,有效数字的错误率为 (16-3)/16 81.25% . 因为16位的正确输出为 0.2971242332737277e-18(ISReals…...

C/C++每日一练:合并K个有序链表

本篇博客将探讨如何 “合并K个有序链表” 这一经典问题。本文将从题目要求、解题思路、过程解析和相关知识点逐步展开,同时提供详细注释的代码示例。 链表(Linked List) 链表是一种线性数据结构,由一系列节点(Node&…...

STM32实现HC595控制三位数码管(内含程序,PCB原理图及相关资料)

目录 任务要求 一、595的作用 二、电路设计 三、STM32选型 四、cubeMX配置 五、代码实现 六、实现效果(显示12.8) 任务要求 使用两个595实现对三位数码管控制,实现三位值显示。 一、595的作用 74HC595的作用是将串行数据进行并行显示…...

《沉积与特提斯地质》

《沉积与特提斯地质》为中国地质调查局主管,中国地质调查局成都地质调查中心(西南地质科技创新中心)主办的地学类学术期刊。 《沉积与特提斯地质》创刊于1981年,创刊名为《岩相古地理研究与编图通讯》,后更名为《岩相…...

Android studio 签名加固后的apk文件

Android studio打包时,可以选择签名类型v1和v2,但是在经过加固后,签名就不在了,或者只有v1签名,这样是不安全的。 操作流程: 1、Android studio 对项目进行打包,生成有签名的apk文件&#xff…...

Brain.js(二):项目集成方式详解——npm、cdn、下载、源码构建

Brain.js 是一个强大且易用的 JavaScript 神经网络库,适用于前端和 Node.js 环境,帮助开发者轻松实现机器学习功能。 在前文Brain.js(一):可以在浏览器运行的、默认GPU加速的神经网络库概要介绍-发展历程和使用场景中&…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号&#xff0c;此时&#xff0c;我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...