程序员学习 CPU 有什么用?

news2024/11/26 4:46:20

本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问。

前言

大家好,我是小彭。

在上一篇文章里,我们聊到了计算机的冯·诺依曼架构,以及计算机的五大部件:控制器、运算器、存储器、输入设备和输出设备。在现在计算机体系中,CPU 是整个计算机的核心,主要包含控制器和运算器两大部件。

在后续文章中,我们将从 CPU 的基本认识开始,逐步将 CPU 与执行系统、存储系统 和 I/O 系统串联起来,请关注。


小彭的 Android 交流群 02 群已经建立啦,扫描文末二维码进入~


思维导图:


1. 认识 CPU 中央处理器

1.1 什么是 CPU?

中央处理单元(Central Processing Unit,CPU)也叫中央处理器或主处理器,是整个计算机的核心,也是整台计算机中造价最昂贵的部件之一。

从硬件的角度: CPU 由超大规模的晶体管组成;

从功能的角度: CPU 内部由时钟、寄存器、控制器和运算器 4 大部分组成。

  • 1、时钟(Clock): 负责发出时钟信号,也可以位于 CPU 外部;
  • 2、寄存器(Register): 负责暂存指令或数据,位于存储器系统金字塔的顶端。使用寄存器能够弥补 CPU 和内存的速度差,减少 CPU 的访存次数,提高 CPU 的吞吐量;
  • 3、控制器(Control Unit): 负责控制程序指令执行,包括从主内存读取指令和数据发送到寄存器,再将运算器计算后的结果写回主内存;
  • 4、运算器(Arithmetic Logic Unit,ALU): 负责执行控制器取出的指令,包括算术运算和逻辑运算。

冯·诺依曼架构

—— 图片引用自 Wikipedia

1.2 为什么要学习 CPU?

对于大部分程序员,日常所处理的工作都是在跟 Java 和 C++ 等高级语言打交道,并不会直接地与 CPU 打交道。那么,为什么我们还要花这么多时间去学习 CPU 呢?我认为有以下原因:

  • 原因 1 - 掌握 CPU 原理能够开发更高性能的程序: 理解 CPU 的工作原理有助于设计出更高性能的算法或代码,例如通过避免伪共享、提高缓存命中率等方式提高程序运行效率,就需要对 CPU 的缓存机制有一定的理解;

  • 原因 2 - 扩展方案积累: CPU 是整个计算机系统中最复杂的模块,也是当代计算机科学的制高点。积累 CPU 内部的解决方案,能够为将来的遇到类似问题提供思路,达到触类旁通的作用。例如 CPU 缓存淘汰策略与应用内存的缓存淘汰策略有相似之处;

  • 原因 3 - CPU 是知识体系最底层的知识: 当我们在思考或解决某一个问题时,就需要利用到更深层次的知识积累来解释,而 CPU 就是位于知识体系中最底层知识。例在内存系统的可见性、执行系统的 IO_WAIT 和线程池设计等问题中,都需要对 CPU 的执行机制有一定理解。

CPU

—— 图片引用自 图片来源

1.3 通用处理器和专用处理器

在早期的计算机系统中,只有 1 个通用处理器,使用 1 个处理器就能够完成所有计算任务。后来人们发现可以把一些计算任务分离出来,单独设计专门的芯片微架构,在执行效率上会远远高于通用处理器,最典型的专用处理器就是 GPU 图形处理器。

这种用来专门处理某种计算任务的处理器就是专用处理器,那为什么专用处理器在处理某些特定问题时更快呢,我认为有 3 点解释:

  • 1、最优架构: 专用处理器只处理少量类型的工作,可以为特定工作设计最优芯片架构,而通用处理器只能设计全局最优架构,但不一定是执行特定工作的最优机构;
  • 2、硬件加速: 可以把多条指令的计算工作直接用硬件实现,相比于 CPU 一条条地执行指令,能够节省大量指令周期;
  • 3、成本更低: 专用处理器执行的计算流程是固定的,不需要 CPU 的流水线控制、乱序执行等功能,实现相同计算性能的造价更低。

现代计算机架构都是 1 个通用处理器加上多个专用处理器,这种将不同类型的计算任务采用不同的计算单元完成的设计,也叫 异构计算(Heterogeneous Computing)。

多处理器架构


2. 指令集架构 ISA

2.1 什么是指令集架构?

CPU 所能理解的机器语言就是 指令(Instruction Code), 一个 CPU 所能理解的所有指令就是 指令集(Instruction Set)。

为了保证芯片间的兼容性,芯片厂商并不为每款新芯片设计一个新的指令集,而是将指令集推广为标准规范,这个规范就是 指令集架构(Instruction Set Architecture,ISA)

相对于指令集架构,CPU 在实现具体指令集功能的硬件电路设计就是 微架构(Micro Architecture)。 如果用软件的思考方式,ISA 就是 CPU 的功能接口,定义了 CPU 的标准规范,而微架构就是 CPU 的功能实现,定义了 CPU 的具体电路设计,一种指令集可以兼容不同的微架构。

2.2 两种主流的指令集架构

因为 CPU 位于整个计算机系统最底层且最核心的部件,如果 CPU 的兼容性都出问题了,那么以前开发的应用软件甚至操作系统将无法在新的 CPU 上运行,这对芯片厂商的生态破坏是致命的。因此,指令集架构是相对稳定的,芯片厂商在 ISA 中添加或删除指令时会非常谨慎。

目前,能够有效占领市场份额的只有 2 个 ISA ,它们也分别代表了复杂与精简 2 个发展方向:

  • x86 架构: Intel 公司在 1970 年代推出的复杂指令集架构;
  • ARM 架构: ARM 公司在 1980 年代推出的精简指令集架构,我们熟悉的 Apple M1 芯片、华为麒麟芯片和高通骁龙芯片都是 ARM 架构(其实,ARM 公司并不生产芯片,而是以技术授权的模式运行)。

2.3 复杂指令集和精简指令集

在 CPU 指令集的发展过程中,形成了 2 种指令集类型:

  • 复杂指令集(Complex Instruction Set Computer,CISC): 强调单个指令可以同时执行多个基本操作,用少量指令就可以完成大量工作,执行效率更高;
  • 精简指令集(Reduced Instruction Set Computer,RISC): 强调单个指令只能执行一个或少数基础操作,指令之间没有重复或冗余的功能,完成相同工作需要使用更多指令。

在早期的计算机系统中,指令集普遍很简单,也没有复杂和精简之分。随着应用软件的功能越来越丰富,应用层也在反向推动芯片架构师推出更强大的指令集,以简化程序编写和提高性能。例如,一些面向音视频的指令可以在一条指令内同时完成多个数据进行编解码。

这在当时的确是不错的选择。 原因是 CPU 和主存的速度差实在太大了,用更少的指令实现程序功能(指令密度更高)可以减少访存次数。 凭借这一点,复杂指令集对精简指令集的优势是几乎全面性的:

  • 优势 1: 可以减少程序占用的内存和磁盘空间大小;
  • 优势 2: 可以减少从内存或磁盘获取指令所需要的带宽,能够提高总线系统的传输效率;
  • 优势 3: CPU L1 Cache 可以容纳更多指令,可以提高缓存命中率。且现代计算机中多个线程会共享 L1 Cache,指令越少对缓存命中率越有利;
  • 优势 4: CPU L2 Cache 可以容纳更多数据,对操作大量数据的程序也有利于提高缓存命中率。

然而,这些优势都是有代价的:

  • 缺点 1 - 处理器设计复杂化: 指令越复杂,用于解析指令的处理器电路设计肯定会越复杂,执行性能功耗也越大;
  • 缺点 2 - 指令功能重叠: 很多新增的指令之间产生了功能重叠,不符合指令集的正交性原则,而且新增的很多复杂指令使用率很低,但处理器却付出了不成正比的设计成本;
  • 缺点 3 - 指令长度不统一: 指令长度不统一,虽然有利于使用哈夫曼编码进一步提高指令密度(频率高的指令用短长度,频率高的指令用大长度),但是指令长度不同,执行时间也有长有短,不利于实现流水线式结构。

因此,到 1980 年代,精简指令集 RISC 逐渐浮出水面。目前,大多数低端和移动系统都采用 RISC 架构,例如 Android 系统、Mac 系统和微软 Surface 系列。

相比于复杂指令集,精简指令集更加强调 “正交性” ,单个指令只能执行一个或少数基础操作,指令之间没有重复或冗余的功能。而且精简指令集的每条 指令长度相同 ,非常便于实现流水线式结构。

网上很多资料有一个误区: 精简指令集简化了指令集的大小。 这是不对的,准确的说法是简化了指令集的复杂度。

总结一下: 复杂指令集凭借更高的指令密度,在性能方面整体优于精简指令集(内存 / 磁盘占用、CPU Cache 命中率、TLB 未命中率),而精简指令集牺牲了指令密度换取更简单的处理器架构,以性能换取功耗的平衡。

指令集类型CISCRISC
指令数量指令数量庞大指令数量相对较少
指令长度长度不同长度相同
指令功能有重叠正交
举例x86ARM、MIPS

3. CPU 的性能指标

3.1 执行系统参数

  • 1、主频(Frequency/Clock Rate): 在 CPU 内部有一个 晶体振荡器(Oscillator Crystal) ,晶振会以一定的频率向控制器发出信号,这个信号频率就是 CPU 的主频。主频是 CPU 最主要的参数,主频越快,计算机单位时间内能够完成的指令越快。 CPU 的主频并不是固定的,CPU 在运行时可以选择低频、满频甚至超频运行, 但是工作频率越高,意味着功耗也越高;

  • 2、时钟周期(Clock Cycle): 主频的另一面,即晶振发出信号的时间间隔, 时钟周期=1/主频;

  • 3、外频: 外频是主板为 CPU 提供的时钟频率,早期计算机中 CPU 主频和外频是相同的,但随着 CPU 主频越来越高,而其他设备的速度还跟不上,所以现在主频和外频是不相等的;

  • 4、程序执行时间:

    • 4.1 流逝时间(Wall Clock Time / Elapsed Time): 程序开始运行到程序结束所流逝的时间;

    • 4.2 CPU 时间(CPU Time): CPU 实际执行程序的时间,仅包含程序获得 CPU 时间片的时间(用户时间 + 系统时间)。由于 CPU 会并行执行多个任务,所以程序执行时间会小于流逝时间;

    • 4.3 用户时间(User Time): 用户态下,CPU 切换到程序上执行的时间;

    • 4.4 系统时间(Sys Time): 内核态下,CPU 切换到程序上执行的时间;

3.2 存储系统参数

  • 字长(Word): CPU 单位时间内同时处理数据的基本单位,多少位 CPU 就是指 CPU 的字长是多少位,比如 32 位 CPU 的字长就是 32 位,64 位 CPU 的字长就是 64 位;

  • 地址总线宽度(Address Bus Width): 地址总线传输的是地址信号,地址总线宽度也决定了一个 CPU 的寻址能力,即最多可以访问多少数据空间。举个例子,32 位地址总线可以寻址 4GB 的数据空间;

  • 数据总线宽度(Data Bus Width): 数据总线传输的是数据信号,数据总线宽度也决定了一个 CPU 的信息传输能力。

区分其它几种容量单位:

  • 字节(Byte): 字节是计算机数据存储的基本单位,即使存储 1 个位也需要按 1 个字节存储;

  • 块(Block): 块是 CPU Cache 管理数据的基本单位,也叫 CPU 缓存行;

  • 段(Segmentation)/ 页(Page): 段 / 页是操作系统管理虚拟内存的基本单位。

相关文章: 计算机的存储器金字塔长什么样?


4. 影响 CPU 性能的因素

CPU 作为计算机的核心部件,未来一定是朝着更强大的性能出发。在看待 CPU 的视角上,我们也要具备一定的全局观:

  • 1、提升 CPU 性能不止是 CPU 的任务: 计算机系统是多个部件组成的复杂系统,脱离整体谈局部没有意义;
  • 2、平衡性能与功耗: 一般来说,CPU 的计算性能越高,功耗也越大。我们需要综合考虑性能和功耗的关系,脱离功耗谈性能没有意义。

4.1 提升 CPU 主频

提升主频对 CPU 性能的影响是最直接的,过去几十年 CPU 的主要发展方向也是在怎么提升 CPU 主频的问题上。

不过,最近几年 CPU 主频的速度似乎遇到瓶颈了。因为想要主频越快,要么让 CPU 满频或超频运行,要么升级芯片制程,在单位体积里塞进去更多晶体管。这两种方式都会提升 CPU 功耗,带来续航和散热问题。如果不解决这两个问题,就无法突破主频瓶颈。

主频的瓶颈

—— 图片引用自 Wikipedia

4.2 多核并行执行

既然单核 CPU 的性能遇到瓶颈,那么在 CPU 芯片里同时塞进去 2 核、4 核甚至更多,那么整个 CPU 芯片的性能不就直接翻倍提升吗?

理想很美好,现实是性能并不总是随着核心数线性增加。在核心数较小时,增加并行度得到的加速效果近似于线性提升,但增加到一定程度后会趋于一个极限, 说明增加并行度的提升效果也是有瓶颈的。

为什么呢?因为不管程序并行度有多高,最终都会有一个结果汇总的任务,而汇总任务无法并行执行,只能串行执行。例如,我们用 Java 的 Fork/Join 框架将一个大任务分解为多个子任务并行执行,最终还是需要串行地合并子任务的结果。

这个结论也有一个经验定律 —— 阿姆达尔定律(Amdahl’s Law) ,它解释了处理器并行计算后效率提升情况。我们把串行的部分称为串行分量 W s W_s Ws ,把并行的部分称为并行分量 W p W_p Wp ,正是串行分量限制了性能提升的极限,串行分量越大,极限越低。

  • 并行后的执行时间是 W p p + W s \frac{W_p}{p} + W_s pWp+Ws
  • 并行后的加速倍数是 W s + W p W s + W p p \frac{W_s+W_p}{W_s+\frac{W_p}{p}} Ws+pWpWs+Wp ,当并行度 p 趋向于 无穷大时,提升极限就是 W s + W p W s \frac{W_s+W_p}{W_s} WsWs+Wp

并行度、并行分量对提升效果的影响

—— 图片引用自 Wiki 百科

说明: 以绿色的曲线为例,程序可以的并行分量是 95%,串行分量是 5%,最终得出的提升极限就会 20 倍。

4.3 指令重排序

增加核心数是提升并行度最直接的方法,但并不是唯一的方法。

现代 CPU 为了提高并行度,会在遵守单线程数据依赖性原则的前提下,对程序指令做一定的重排序。事实上不止是 CPU,从源码到指令执行一共有 3 种级别重排序:

  • 1、编译器重排序: 例如将循环内重复调用的操作提前到循环外执行;
  • 2、处理器系统重排序: 例如指令并行技术将多条指令重叠执行,或者使用分支预测技术提前执行分支的指令,并把计算结果放到重排列缓冲区(Reorder Buffer)的硬件缓存中,当程序真的进入分支后直接使用缓存中的结算结果;
  • 3、存储器系统重排序: 例如写缓冲区和失效队列机制,即是可见性问题,从内存的角度也是指令重排问题。

指令重排序类型

相关文章: 12 张图看懂 CPU 缓存一致性与 MESI 协议,真的一致吗?

4.4 SoC 芯片 —— 片内片外双总线结构

随着芯片集成电路工艺的进步,在冯·诺依曼架构中的五大部件(运算器、控制器、存储器、输入和输出设备接口)也可以集成在一个芯片上,形成一个近似于完整计算机的系统,这种芯片也叫 片上系统(System on Chip,Soc)。 SoC 芯片将原本分布在主板上的各个部件聚合到同一个芯片上,不同部件之间的总线信息传输效率更高。

相关文章: 图解计算机内部的高速公路 —— 总线系统


5. 总结

今天,我们简单了讨论了 CPU 的基本概念,很多问题只是浅尝辄止。在后续的文章里,我们将从执行系统、存储系统 和 I/O 系统三个角度与 CPU 串联起来。请关注。


参考资料

  • CPU 通识课 —— 靳国杰 张戈 著
  • 深入浅出计算机组成原理 —— 徐文浩 著,极客时间 出品
  • Code Density Concerns for New Architectures —— Vincent M. Weaver 等著
  • Central processing unit —— Wikipedia
  • Instruction set architecture —— Wikipedia
  • Complex instruction set computer —— Wikipedia
  • Reduced instruction set computer —— Wikipedia
  • Application binary interface —— Wikipedia
  • Clock Rate —— Wikipedia
  • Amdahl’s law —— Wikipedia

小彭的 Android 交流群 02 群

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

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

相关文章

最全面的Spring教程(五)——文件上传与下载

前言 本文为 【SpringMVC教程】文件上传与下载 相关知识&#xff0c;具体将对使用MultipartResolver处理文件上传的步骤&#xff0c;两种文件下载方式&#xff08;直接向response的输出流中写入对应的文件流、使用 ResponseEntity<byte[]>来向前端返回文件&#xff09;等…

老油条表示真干不过,部门新来的00后测试员已把我卷崩溃,想离职了...

在程序员职场上&#xff0c;什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事&#xff0c;我们可以帮他。 是技术太强的人吗?也不是。技术很强的同事&#xff0c;可遇不可求&#xff0c;向他学习还来不及呢。 真正让人反感的&#xff0c;是技术平平&#x…

降价背后,函数计算规格自主选配功能揭秘

作者&#xff1a;吴森梵&#xff08;仰森&#xff09; 在刚刚结束的 2022 杭州 云栖大会上&#xff0c;阿里云宣布函数计算 FC 开启全面降价&#xff0c;vCPU 单价降幅 11% &#xff0c;其他的各个独立计费项最高降幅达 37.5% 。函数计算 FC 全面降价&#xff0c;让 Serverle…

【Pandas数据处理100例】(七十五):Pandas的where()函数使用方法

前言 大家好,我是阿光。 本专栏整理了《Pandas数据分析处理》,内包含了各种常见的数据处理,以及Pandas内置函数的使用方法,帮助我们快速便捷的处理表格数据。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmPandas版本:1.3.5N…

线程篇(JAVA)

&#x1f495;前言&#xff1a;作者是一名正在学习JAVA的初学者&#xff0c;每天分享自己的学习笔记&#xff0c;希望能和大家一起进步成长&#x1f495; 目录 线程&#xff08;重点&#xff09; 第一种线程的实现 第二种线程的实现 线程的执行原理 线程的生命周期 休眠 …

醇酰基转移酶基因对猕猴桃酯生物合成的作用

文章信息 题目&#xff1a;Alcohol acyl transferase genes at a high-flavor intensity locus contribute to ester biosynthesis in kiwifruit 刊名&#xff1a;Plant Physiology 作者&#xff1a;Edwige J F Souleyre et al. 单位&#xff1a;New Zealand Institute for…

工业互联网数据监测预警解决方案

一、工业互联网数据安全趋势 随着“云、大、物、移、智”等新一代信息技术与制造业的融合发展&#xff0c;数字化生产、网络化协同、个性化定制、服务化延伸等生产运营模式逐渐成为常态&#xff0c;工业互联网数据不断走向开放流动。但原本封闭在工业现场的数据上网上云会带来…

论互联网公司的盈利能力

这个月&#xff0c;互联网公司三季度财报基本披露完毕。其中的共同点是都开始降本增效&#xff0c;提升盈利能力&#xff08;或者还在努力扭亏为盈&#xff09;。互联网公司基本是面向C端消费者的&#xff0c;京东创始人刘强东曾提出一个贯穿消费行业的“十节甘蔗”理论&#x…

[附源码]计算机毕业设计springboot健身房预约平台

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【剧前爆米花--爪哇岛寻宝】面向对象的三大特性——封装、继承以及多态的详细剖析(中——多态)。

作者&#xff1a;困了电视剧 专栏&#xff1a;《JavaSE语法与底层详解》 文章分布&#xff1a;这是一篇关于Java面向对象三大特性——多态的文章&#xff0c;在本篇文章中我会分享多态的一些基础语法以及类在继承时代码的底层逻辑和执行顺序。 目录 多态的定义及实现条件 多态…

AWS动手实验 - 创建一个Web3网站

实验操作和录播 亚马逊云科技开发者社区 注意事项 按照操作手册进行即可&#xff0c;需要注意到的几个地方&#xff1a; 1&#xff1a;EC2 的 scale 可以不用设置为large那么高&#xff0c;small就够用了。 2&#xff1a;创建堆栈&#xff0c;是点击这个那个按钮&#xff0…

水土保持监测,无人机倾斜摄影该如何做?

水土监测在传统监测方法中存在着许多监测死角。近年来&#xff0c;随着无人机的普及&#xff0c;无人机倾斜摄影三维建模技术在水土保持领域发挥了巨大作用。 我国具有地形地貌范围广&#xff0c;地质情况复杂等特点&#xff0c;每年地质灾害造成很多人员伤亡和财产损失&#…

数商云SCM管理系统库存管理功能助力新能源汽车企业仓储管理更高效

在全球电动化浪潮下&#xff0c;新能源汽车近年来迎来快速发展&#xff0c;但同时&#xff0c;随之而来其面临的关键零部件供应链安全问题也愈来愈突出&#xff0c;新能源汽车供应链格局正在面临重塑&#xff0c;保障新能源汽车产业健康发展仍需持续发力。 随着国际形势突变&a…

Markdown基本语法

描述 Markdown 是一种轻量级的「标记语言」&#xff0c;可读、直观、学习成本低。 1. 强调 1.1 斜体&#xff08;单*、单_&#xff09; 例&#xff1a; *AlexYY* _AlexYY_ 效果&#xff1a; AlexYY AlexYY 1.2 加粗&#xff08;双*、双_&#xff09; 例&#xff1a; *Ale…

python常用代码总结2

1、列表的常规追加元素、追加列表操作 (1)列表追加多个元素&#xff0c;比如追加0-9 ls [] ls.extend(list(range(10)))ls Out[20]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] (2)列表追加多个相同的元素&#xff0c;比如追加10个0 ls1 [] for i in range(10):ls1.append(0)ls1 Ou…

如何通过链路追踪进行定时任务诊断

作者&#xff1a;千习 背景简介 什么是定时任务 定时任务是业务应用系统中存在定时周期性运行的业务逻辑。由于其运行于后端进程中往往存在执行状态和执行链路的不可见性《常见定时任务技术方案》。 https://developer.aliyun.com/article/882393 什么是链路追踪 随着分布式…

[附源码]计算机毕业设计springboot基于微信小程序的网络办公系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

zookeeper集群环境搭建及使用

文章目录前提条件下载解压配置文件集群配置测试常用命令前提条件 操作系统&#xff1a;CentOS7服务器&#xff1a;3台Java环境&#xff1a;JDK1.8。安装教程参考JDK1.8安装 下载 执行cd /usr/local进入安装的目录执行命令wget https://archive.apache.org/dist/zookeeper/zo…

ThreadPoolExecutor类是如何保证线程池正确运行的

ThreadPoolExecutor类中的重要属性 在ThreadPoolExecutor类中&#xff0c;存在几个非常重要的属性和方法&#xff0c;接下来&#xff0c;我们就介绍下这些重要的属性和方法。 ctl相关的属性 AtomicInteger类型的常量ctl是贯穿线程池整个生命周期的重要属性&#xff0c;它是一…

LRU Cache【理论讲解 + 代码实现】

LRU Cache&#x1f4d6;1. 什么是LRU Cache&#x1f4d6;2. 为什么需要LRU算法&#xff1f;&#x1f4d6;3. LRU Cache的实现&#x1f4d6;1. 什么是LRU Cache LRU是Least Recently Used的缩写&#xff0c;意思是最近最少使用. 它是一种Cache替换算法. 什么是Cache? 狭义的…