计算机组成原理 — CPU 中央处理器

目录

前文列表

计算机组成原理 — 冯诺依曼体系结构
计算机组成的基本硬件设备

逻辑电路部件

组合逻辑电路

  • 三态电路
  • 异或门
  • 加法器
  • 译码器
  • 数据选择器

时序逻辑电路

  • 触发器
  • 寄存器和移位寄存器
  • 计数器

阵列逻辑电路

阵列 指的是逻辑元件在硅芯片上以阵列的形式排列。

  • 只读存储器(ROM)
  • 可编程序逻辑阵列(PLA)
  • 可编程序阵列逻辑(PAL)
  • 通用阵列逻辑(GAL)
  • 门阵列(GA)、宏单元阵列(MCA)、标准单元阵列(SCA)
  • 现场可编程序门阵列(FPGA)

中央处理器(CPU)

微处理器的出现得益于集成电路的发展,将控制器和运算器集成在一个芯片上,称为中央处理器(CPU)。CPU 从逻辑上可以分为 3 个模块:控制单元、运算单元和存储单元,这三部分由 CPU 的片内总线连接起来。

:片内总线,指计算机各芯片内部传送信息的通道。
在这里插入图片描述

控制单元(控制器)

控制单元是 CPU 的指挥控制中心,主要由 PC 程序计数器、指令寄存器 IR(Instruction Register)、指令译码器 ID(Instruction Decoder)和操作控制器 OC(Operation Controller)组成。控制单元工作时,PC 根据程序依次从存储器中取出一条条指令并暂存在 IR 中,通过 ID 分析指令的内容,以确定应该进行什么操作,然后通过 OC 按照确定的时序,向相应的部件发出微操作控制信号。OC 中主要包括节拍脉冲发生器、控制矩阵、时钟脉冲发生器、复位电路和启停电路等控制逻辑。

在这里插入图片描述
在这里插入图片描述

PC 程序计数器:又叫 PC 寄存器(Program Counter Register),本质是指令地址寄存器(Instruction Address Register)。存放当前正在执行的指令的地址或即将要执行的下一条指令的地址。有两种方式形成指令地址:一是顺序执行通过程序计数器 +1 得到下一条指令的地址;二是跳跃执行通过跳转类指令得到下一条指令的地址。

IR 指令寄存器(Instruction Register):区别于指令地址寄存器,是存放当前正在执行的指令。以便在指令执行的过程中控制完成一条指令的全部功能。

ID 指令译码器:对指令的操作码(OPCODE)进行解析,并产生相应的控制型号。

脉冲源及启停线路:脉冲源产生一定频率的脉冲作为 CPU 的时钟脉冲,是 CPU 工作周期的基准信号。而启停线路则保证了可靠地送出或封锁完整的时钟脉冲。

时序控制信号形成部件:在 CLK 时钟的作用下,根据当前正在执行的指令的需要,产生对应的时间控制信号,并根据被控功能部件的反馈信号调整时序控制信号。

运算单元(运算器)

运算单元是可以执行算术运算(e.g. 加减乘除)和逻辑运算(e.g. 与或非、位移、比较)。运算单元所进行的全部操作都由控制单元发出的控制信号指挥,运算单元是单纯的执行部件。

定点运算部件:由逻辑运算部件(ALU)、若干个寄存器、移位电路、计数器和门电路组成。其中 ALU 主要完成加减法算术运算及逻辑运算。
浮点运算部件:由阶码运算部件和尾数运算部件组成。阶码部分仅执行加减法运算,尾数部分则可执行加减乘除运算。

存储单元(寄存器组和片内缓存)

存储单元是 CPU 暂存数据的地方,保存着等待处理的数据,或是已经处理过的数据。CPU 访问寄存器的速度比访问主存储器的速度更快,采用寄存器,可以减少 CPU 访问内存的次数,从而提高工作速度。但因为受到芯片面积和集成度的限制,寄存器组的容量不会很大。寄存器组可分为专用寄存器和通用寄存器。专用寄存器的作用是固定的,寄存相应的数据。而通用寄存器的用途则更加广泛,并可由程序员规定其用途。

寄存器由多个触发器(Flip-Flop)或锁存器(Latches)组成的简单电路,触发器和锁存器是两种原理不同的数字电路组成的逻辑门,属于数字电路领域。N 个触发器或锁存器就可以组成一个 N Bit 的寄存器,能够保存 N 为数据。我们常说的 64 位 Intel CPU,其寄存器就是 64 位的,所以其最大的直接寻址空间就为 264 bit。需要注意的是,并不是说寄存器是 64 位的,那么该 CPU 只支持使用 264 bit 的存储器空间,因为 CPU 除了支持直接寻址方式之外,还支持基址寄存器寻址方式,实现了基于内存分页的地址寻址方式,寻址空间得到了巨大的提升。

在这里插入图片描述

CPU 的工作原理

在这里插入图片描述
控制单元在时序脉冲的作用下,从程序入口将第一条指令的地址写入 PC 程序计数器(本质是寄存器),控制单元将 PC 程序计数器的指令地址送到地址总线上,CPU 就将这个地址指向的指令读到 IR 指令寄存器,再通过 ID 指令译码器进行译码,了解指令的操作内容和操作数。对于执行指令过程中所需要用到的操作数,会将操作数的地址码也送到地址总线上,CPU 就将这个地址指向的数据读取到寄存器组中暂存起来,最后 OC 操作控制器发出控制型号到运算单元,由运算单元完成对数据的加工处理。然后 PC 程序计数器自增,周而复始,一条一条指令执行下去,直到停电为止。

在这里插入图片描述

将过程简化为下述步骤

  1. 取指令
  2. 分析指令
  3. 执行指令
  4. 修改指令计数器

上述步骤的执行期间还可能会穿插着

  • 控制程序和数据的输入与结果输出:根据程序的内容或人工干预,控制单元在适当的时候向输入/输出设备发出相应的指令来完成 I/O 功能。
  • 对异常情况和某些请求的处理:在特定的时刻(异常中断、输入/输出中断),由相应的部件或设备向 CPU 发出中断请求信号或 DMA 请求信号。
    • 中断请求信号:待 CPU 执行完当前指令后,响应该中断请求,中止当前执行的程序,转而执行中断程序。待中断程序执行完后,再回到原程序继续执行下去。
    • DMA 请求信号:待 CPU 完成当前机器周期的操作后,暂停工作,让出总线给 I/O 设备。待完成 I/O 设备和存储器之间的数据传输之后,CPU 从暂时中止的机器周期开始继续执行原程序的指令。

时钟周期、机器周期、指令周期和总线周期

时钟脉冲:指脉冲信号,是一个由 CPU 控制单元按一定电压幅度、一定时间间隔连续发出的电子脉冲信号,是计算机的基本工作脉冲,控制着计算机的工作节奏。时钟频率越高,时钟周期就越短,工作速度也就越快。

时钟频率(Clock Speed):指同步电路中时钟脉冲的基础频率,是单位时间(1s)内所产生的时钟脉冲的个数。时钟频率是描述周期性循环信号在单位时间内所出现的次数,标准计量单位是 Hz(赫兹)。

CPU 主频:即 CPU 内部工作的时钟频率,是评定 CPU 性能的重要指标,一般来说主频数值越大越好。需要注意的是,主频仅是 CPU 性能表现的一个方面,而不代表 CPU 的整体性能,CPU 的运算速度还考虑流水线的各方面的性能指标(缓存、指令集、CPU 的位数等)。

外频:是 CPU 外部的工作频率,是由主板提供的基准时钟频率。CPU 主频和外频的关系:主频=外频×倍频。

FSB 频:是连接 CPU 和主板芯片组中的北桥芯片的前端总线(Front Side Bus)上的数据传输频率。

时钟周期:也称为振荡周期、P 周期或节拍脉冲,定义为时钟频率的倒数,即 (1/时钟频率)s,比如:8086/8088 系统的时钟频率为 4.77MHz,那么每个时钟周期约为 200ns。时钟周期在 CPU 的描述里也叫节拍,是 CPU 中最基本的、最小的时间单位,在一个时钟周期内,CPU 仅完成一个最基本的动作。时钟周期表示了 S/DRAM 所能运行的最高频率,更小的时钟周期就意味着更高的工作频率。

状态周期:也称为 S 周期,把时钟脉冲的周期定义为节拍(用 P 表示)。时钟脉冲经过二分频后定义为状态,即一个状态包含两个节拍,称为状态周期(用 S 表示)。

机器周期:在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如:取指令、分析指令、执行指令、存储器读、存储器写等,此类每项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个状态周期组成。机器周期一般由 12 个时钟周期组成,也是由 6 个状态周期组成。

指令周期:指令周期是取出一条指令并执行这条指令的时间。一般由若干个机器周期组成,是从取指令、分析指令到执行完所需的全部时间。指令周期类型有非访内指令的指令周期、取数指令的指令周期、存数指令的指令周期、空操作指令和转移指令的指令周期。

在这里插入图片描述
在这里插入图片描述
:图源自 https://blog.csdn.net/u012076669/article/details/84452264

总线周期:指 CPU 完成一次访问主存储器或 I/O 端口所需要的时间,一个总线周期由几个时钟周期组成。由于主存储器和 I/O 端口是挂接在总线上的,CPU 对主存储器和 I/O 接口的访问,是通过总线实现的。通常把CPU通过总线对微处理器外部(存储器或I/O接口)进行一次访问所需时间称为一个总线周期。

CPU 流水线

我们知道 CPU 执行一条指令时可以分为取指令、分析指令、执行指令、存结果等若干个步骤,不同的步骤可能由 CPU 内部的不同部件(指令部件、执行部件)来完成。在这样的前提下,如果 CPU 单纯的顺序执行这些步骤的话,势必会在某一时刻令一些部件空闲。可想而知,如果 CPU 控制单元调度恰当,让不同部件可以并行工作的话,是可以提高各个部件的工作效率和计算机运算速度的,这就是流水线调度方式。

CPU 流水线(Pipeline),亦称管线,是现代计算机处理器中必不可少的部分,是指将计算机指令处理过程拆分为多个步骤,并通过多个硬件处理单元并行执行来加快指令执行速度。其具体执行过程类似工厂中的流水线,并因此得名。流水线主要分为 指令执行流水线运算操作流水线(如:浮点加法运算)两类。
在这里插入图片描述
流水线的好处

  • 提高 CPU 主频:流水线将组合逻辑分割成多个小块,因为每段的关键路径变短了,所以能提高系统主频。
  • 提高系统吞吐量:因为流水线让任务以类似并行方式处理,提高硬件模块的利用率,所以能提高吞吐量(Throughput)。

流水线的缺点:由于流水线让许多指令被同时执行,假如分支预测错误的话整个流水线上所有的指令全部要被取消,流水线要被重新充满,就需要从存储器或者 CPU 缓存中调用指令,导致延迟时间,在这段时间里 CPU 是没有任何工作的。NetBurst 架构管线一开始有 20 级、而后增加至 31 级,放大其缺点。其后继者 Intel Core 微处理器架构就减少管线级数。

CPU 是如何访问内存的?

在这里插入图片描述

在这里插入图片描述

从图中可以清晰地看出,CPU、MMU、DDR 这三部分在硬件上是如何分布的。首先 CPU 在访问内存的时候都需要通过 MMU 把虚拟地址转化为物理地址,然后通过总线访问内存。MMU 开启后 CPU 看到的所有地址都是虚拟地址,CPU 把这个虚拟地址发给 MMU 后,MMU 会通过页表在页表里查出这个虚拟地址对应的物理地址是什么,从而去访问外面的 DDR(内存条)。

所以搞懂了 MMU 如何把虚拟地址转化为物理地址也就明白了 CPU 是如何通过 MMU 来访问内存的。

MMU 是通过页表把虚拟地址转换成物理地址,页表是一种特殊的数据结构,放在系统空间的页表区存放逻辑页与物理页帧的对应关系,每一个进程都有一个自己的页表。

CPU 访问的虚拟地址可以分为:p(页号),用来作为页表的索引;d(页偏移),该页内的地址偏移。现在我们假设每一页的大小是 4KB,而且页表只有一级,那么页表长成下面这个样子(页表的每一行是 32 个 bit,前 20 bit 表示页号 p,后面 12 bit 表示页偏移 d):

在这里插入图片描述
CPU,虚拟地址,页表和物理地址的关系如下图:
在这里插入图片描述

页表包含每页所在物理内存的基地址,这些基地址与页偏移的组合形成物理地址,就可送交物理单元。

上面我们发现,如果采用一级页表的话,每个进程都需要 1 个 4MB 的页表(假如虚拟地址空间为 32 位,即 4GB、每个页面映射 4KB 以及每条页表项占 4B,则进程需要 1M 个页表项,4GB/4KB = 1M),即页表(每个进程都有一个页表)占用 4MB(1M * 4B = 4MB)的内存空间)。

然而对于大多数程序来说,其使用到的空间远未达到 4GB,何必去映射不可能用到的空间呢?也就是说,一级页表覆盖了整个 4GB 虚拟地址空间,但如果某个一级页表的页表项没有被用到,也就不需要创建这个页表项对应的二级页表了,即可以在需要时才创建二级页表。做个简单的计算,假设只有 20% 的一级页表项被用到了,那么页表占用的内存空间就只有 0.804MB(1K * 4B + 0.2 * 1K * 1K * 4B = 0.804MB)。

除了在需要的时候创建二级页表外,还可以通过将此页面从磁盘调入到内存,只有一级页表在内存中,二级页表仅有一个在内存中,其余全在磁盘中(虽然这样效率非常低),则此时页表占用了8KB(1K * 4B + 1 * 1K * 4B = 8KB),对比上一步的 0.804MB,占用空间又缩小了好多倍!总而言之,采用多级页表可以节省内存。

二级页表就是将页表再分页。仍以之前的 32 位系统为例,一个逻辑地址被分为 20 位的页码和 12 位的页偏移 d。因为要对页表进行再分页,该页号可分为 10 位的页码 p1 和 10 位的页偏移 p2。其中 p1 用来访问外部页表的索引,而 p2 是是外部页表的页偏移。

在这里插入图片描述

在这里插入图片描述

主流 CPU 指令集架构

CISC(复杂指令集计算机)

CISC(Complex Instruction Set Computer,复杂指令集计算机)是一种计算机语言指令集,每个指令可执行若干个低级操作,诸如:存储器数据存取和计算操作,全都集于一条指令之中。复杂指令集的特点是指令数目多而复杂,每条指令的字长并不相等,计算机处理器必须加以判读,并为此付出了性能的代价。而 CISC 的好处在于其更趋近于跨越了与高级编程语言的 “语义鸿沟”,提供了更 “高端” 的指令以支持高级编程语言的语义,例如:判断、循环、函数调用、返回等高级指令。

x86 系列处理器

从 1978 年 6 月 8 日,Intel 公司发布新款 16 位微处理器 8086,开创 x86 架构时代算起,Intel x86(The X86 architecture)架构已经四十多年了,是世界上设计、生产、制造最多的 CPU 体系之一。Intel 从 8086 开始,到 286、386、486、586、P1、P2、P3、P4、i3、i5、i7、i9 都使用了 x86 架构。所谓 x86 指的是一个 Intel 通用计算机系列的标准编号缩写,也标识一套通用的计算机语言指令集合,定义了芯片的基本使用规则。

RISC(精简指令集计算机)

RISC 是一种执行较少类型计算机指令的微处理器,起源于 80 年代的 MIPS 主机(即 RISC 机),RISC 机中采用的微处理器统称 RISC 处理器。这样一来,它能够以更快的速度执行操作(每秒执行更多百万条指令,即 MIPS)。因为计算机执行每个指令类型都需要额外的晶体管和电路元件,计算机指令集越大就会使微处理器更复杂,执行操作也会更慢。

性能特性

  • 由于指令集简化后,流水线以及常用指令均可用硬件执行;
  • 采用大量的寄存器,使大部分指令操作都在寄存器之间进行,提高了处理速度;
  • 采用 “缓存-主存-外存” 三级存储结构,取数与存数指令分开执行,使处理器可以完成尽可能多的工作,且不因从存储器存取信息而放慢处理速度。

ARM 系列处理器

ARM(Advanced RISC Machine,进阶精简指令集机器,更早称作:Acorn RISC Machine)架构,是一个 32 位精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。由于节能的特点,ARM 处理器非常适用于行动通讯领域,符合其主要设计目标为低耗电的特性。

在今日,ARM 家族占了所有 32 位嵌入式处理器 75% 的比例。可以在很多消费性电子产品上看到,从可携式装置(PDA、移动电话、多媒体播放器、掌上型电子游戏,和计算机)到电脑外设(硬盘、桌上型路由器)甚至在导弹的弹载计算机等军用设施中都有 ARM 的存在。

  • 优势:价格低、能耗低;
  • ARM 的商业授权模式:ARM 公司本身并不靠自有的设计来制造或出售计算机处理器 ,而是将 ARM 架构授权给有兴趣的厂家。
  • 生产厂商:TI (德州仪器)、Samsung(三星)、Freescale(飞思卡尔)、Marvell(马维尔)、Nvidia(英伟达)

PowerPC 系列处理器

PowerPC 是一种精简指令集(RISC)架构的中央处理器,其基本的设计源自 IBM 的 IBM PowerPC 601 微处理器 POWER(Performance Optimized With Enhanced RISC,增强 RISC 性能优化)架构。二十世纪九十年代,IBM、Apple 和 Motorola 公司成功开发出 PowerPC 芯片,并制造出基于 PowerPC 的多处理器计算机。PowerPC 架构的特点是可伸缩性好、方便灵活。

PowerPC 处理器有广泛的实现范围,包括从诸如 Power4 那样的高端服务器 CPU 到嵌入式 CPU 市场(任天堂 Gamecube 使用了 PowerPC)。PowerPC 处理器有非常强的嵌入式表现,因为它具有优异的性能、较低的能量损耗以及较低的散热量。除了象串行和以太网控制器那样的集成 I/O,该嵌入式处理器与 PC(Personal Computer)级 CPU 存在非常显著的区别。

MIPS 架构

MIPS(Microprocessor without interlocked piped stages,无内部互锁流水级的微处理器)是世界上很流行的一种 RISC 处理器,其机制是尽量利用软件办法避免流水线中的数据相关问题。它最早是在 80 年代初期由斯坦福大学 Hennessy 教授领导的研究小组研制出来的。MIPS 公司的 R 系列就是在此基础上开发的 RISC 工业产品的微处理器。这些系列产品为很多计算机公司采用构成各种工作站和计算机系统。

MIPS 技术公司是美国著名的芯片设计公司,它采用精简指令系统计算结构(RISC)来设计芯片。和英特尔采用的复杂指令系统计算结构(CISC)相比,RISC 具有设计更简单、设计周期更短等优点,并可以应用更多先进的技术,开发更快的下一代处理器。MIPS 是出现最早的商业 RISC 架构芯片之一,新的架构集成了所有原来 MIPS 指令集,并增加了许多更强大的功能。MIPS 自己只进行 CPU 的设计,之后把设计方案授权给客户,使得客户能够制造出高性能的 CPU。

Wave Computing 公司在 2018 年 12 月 17 日宣布开源 MIPS,MIPS 指令集架构(ISA)和 MIPS 的最新核心 R6 将于 2019 年第一季度公开发布。在国内,龙芯很长一段时间都在用 MIPS,直到 RISC-V 出现并得到广泛关注,今年 MIPS 也开源了,但对标 RISC-V 慢了一步。虽说,MIPS 仍有竞争力,只是如果它早几年开源的话,RISC-V 或许不会出现。

RISC-V 架构

RISC-V(读作 “RISC-FIVE”)是一个基于精简指令集(RISC)原则的开源指令集架构(ISA),V 表示为第五代 RISC。与大多数指令集相比,RISC-V 指令集可以自由地用于任何目的,允许任何人设计、制造和销售 RISC-V 芯片和软件。虽然这不是第一个开源指令集,但它具有重要意义,因为其设计使其适用于现代计算设备(如:仓库规模云计算机、高端移动电话和微小嵌入式系统)。设计者考虑到了这些用途中的性能与功率效率。该指令集还具有众多支持的软件,这解决了新指令集通常的弱点。

RISC-V 项目在 2010 年始于加州大学柏克莱分校,但许多贡献者是该大学以外的志愿者和行业工作者。RISC-V 指令集的设计考虑了小型、快速、低功耗的现实情况来实做,但并没有对特定的微架构做过度的设计。截至 2017 年 5 月,RISC-V 已经确立了版本 2.22 的用户空间的指令集(User Space ISA),而特权指令集(Privileged ISA)也处在草案版本 1.10。

在这里插入图片描述

为什么 CPU 会有 L1、L2、L3 级缓存

缓存的意义很广泛:电脑整机最大的缓存可以体现为内存条、显卡上的显存就是显卡芯片所需要用到的缓存、硬盘上也有相对应的缓存、CPU 有着最快的缓存(L1、L2、L3 缓存等),缓存就是数据交换的缓冲区(Cache)。缓存往往都是 RAM(断电即掉的非永久储存),它们的作用就是帮助硬件更快地响应。

CPU 缓存是什么?

CPU 缓存的定义为 CPU 与内存之间的临时数据交换器,它的出现是为了解决 CPU 运行处理速度与内存读写速度不匹配的矛盾 —— 缓存的速度比内存的速度快多了。CPU 缓存一般直接跟 CPU 芯片集成或位于主板总线互连的独立芯片上。(现阶段的 CPU 缓存一般直接集成在 CPU 上)CPU 往往需要重复处理相同的数据、重复执行相同的指令,如果这部分数据、指令 CPU 能在 CPU 缓存中找到,CPU 就不需要从内存或硬盘中再读取数据、指令,从而减少了整机的响应时间。

在这里插入图片描述

CPU 缓存速度和内存速度差多少?

如果 CPU 在 L1 缓存中找到所需要的资料要用的时间为 3 个周期左右,那么在 L2 二级缓存找到资料的时间就要 10 个周期左右,L3 三级缓存所需时间为 50 个周期左右;如果要到内存上去找呢,那就慢多了,可能需要几百个周期的时间。

三级缓存(L1、L2、L3)是什么?

以 Intel 为例,Intel 官网上的处理器界面内对缓存的定义为:CPU 高速缓存是处理器上的一个快速记忆区域。英特尔智能高速缓存(SmartCache)是指可让所有内核动态共享最后一级高速缓存的架构。这里就提及到了最后一级高速缓存的概念,即为 CPU 缓存中的L3 缓存。

在这里插入图片描述

以近代 CPU 的视角来说,三级缓存都是集成在 CPU 内的缓存,它们的作用都是作为 CPU 与主内存之间的高速数据缓冲区,L1 最靠近 CPU 核心;L2 其次;L3 再次。运行速度方面:L1 最快、L2 次快、L3 最慢;容量大小方面:L1 最小、L2 较大、L3 最大。

CPU 会先在最快的 L1 中寻找需要的数据,找不到再去找次快的 L2,还找不到再去找 L3,L3 都没有那就只能去内存找了。L1、L2、L3 可以说是各有特点,下面我们就分开来讲一下。

L1 Cache

一级缓存这个名词出现应该是在 Intel 公司 Pentium 处理器时代把缓存开始分类的时候,当时在CPU内部集成的 CPU 缓存已经不能满足整机的性能需求,而制造工艺上的限制不能在 CPU 内部大幅提高缓存的数量,所以出现了集成在主板上的缓存,当时人们把 CPU 内部集成的 CPU 缓存成为一级缓存,在 CPU 外部主板上的缓存称为二级缓存。

在这里插入图片描述

而一级缓存其实还分为一级数据缓存(Data Cache,D-Cache,L1d)和一级指令缓存(Instruction Cache,I-Cache,L1i),分别用于存放数据及执行数据的指令解码,两者可同时被 CPU 访问,减少了 CPU 多核心、多线程争用缓存造成的冲突,提高了处理器的效能。一般 CPU 的 L1i 和 L1d 具备相同的容量,例如 I7-8700K 的 L1 即为 32KB+32KB。

L2 Cache

随着 CPU 制造工艺的发展,本来处于 CPU 外部的二级缓存也可以轻易地集成进 CPU 内部,这种时候再用缓存是否处于 CPU 内部来判断一二级缓存已经不再确切。集成进 CPU 的 L2 二级缓存运行速率渐渐可以跟上 CPU 的运行速度了,其主要作用为当 CPU 在 L1 中没读取到所需要的数据时再把数据展示给 CPU 筛选(CPU 未命中 L1 的情况下继续在 L2 寻求命中,缓存命中的工作原理我们稍后再讲)。

L2 二级缓存比 L1 一级缓存的容量要更大,但是 L2 的速率要更慢,为什么呢?首先 L2 比 L1 要更远离 CPU 核心,L1 是最靠近 CPU 核心的缓存,CPU 需要读取 L2 的数据从物理距离上比 L1 要更远;L2 的容量比 L1 更大,打个简单的比喻,在小盒子里面找东西要比在大房间里面找要方便快捷。这里也可以看出,缓存并非越大越好,越靠近 CPU 核心的缓存运行速率越快越好,非最后一级缓存的缓存容量自然是够用即可。

在这里插入图片描述
L2 二级缓存实际上就是 L1 一级缓存跟主内存之间的缓冲器,在 2006 年的时间点上,Intel 和 AMD 当家在售的几款处理器可以看出他们对最后一级缓存不同的见解:Intel Core Duo 不同于它的前辈 Pentium D、EE,采用了双核心共享的 2M L2 二级缓存,是属于当时最先二级缓存架构,即 “Smart Cache” 共享缓存技术,这种技术沿用到以后的 Intel 推出的所有多核心处理器上;而 AMD Athlon 64X2 处理器则是每个 CPU 核心都具备独立的二级缓存,Manchester 核心的处理器为每核心 512KB、Toledo 核心为每核心 1MB,两个核心之间的缓存的数据同步是通过 CPU 内置的 SRI(系统请求接口)控制,这样的数据延迟及占用资源情况都要比 Intel 的 Pentium D、EE 核心要好,但还是比不上 Core 为代表的 Smart Cache 缓存共享。

L3 Cache

最初出现 L3 三级缓存的应该是 AMD 的 K6-III 处理器,当时受限于制造工艺,L3 只能集成在主板上。然后 Intel 首次出现 L3 三级缓存的是 Itanium 安腾服务器处理器,接着就是 P4EE 和至强 MP。L3 三级缓存的出现其实对 CPU 性能提升呈一个爬坡曲线 —— L3 从 0 到 2M 的情况 CPU 性能提升非常明显,L3 从 2M 到 6M 提升可能就只有 10% 不到了,这是在近代 CPU 多核共享 L3 的情况下;当 L3 集成进 CPU 正式成为 CPU 内部缓存后,CPU 处理数据时只有 5% 需要在内存中调用数据,进一步地减少了内存延迟,使系统的响应更为快速。

在这里插入图片描述

同理,L3 即为 L2 与主内存之间的缓冲器,主要体现在提升处理器大数据处理方面的性能,对游戏表现方面有较大的帮助。那么也许有人就会问了,是不是选择 CPU 的时候看准 L3 买,哪个 CPU 的 L3 大就买哪个?非也,只有同架构的情况下这种比较才具有意义,先举个比较久远的例子:Intel 具备 1MB L3 的 Xeon MP 处理器仍然不是 AMD 没有 L3 的皓龙处理器对手,再来个现有的:Intel I7-8700K 12MB L3 和 AMD Threadripper 1950X 32MB L3 相比,自然是 32MB 比 12MB 大,但是平均下来也是一个核心 2MB L3,性能就见仁见智了。

CPU 缓存是怎样帮助 CPU 工作的?

在这里插入图片描述
由于数据的局限性,CPU 往往需要在短时间内重复多次读取数据,内存的运行频率自然是远远跟不上 CPU 的处理速度的,怎么办呢?缓存的重要性就凸显出来了,CPU 可以避开内存在缓存里读取到想要的数据,称之为命中(hit)。L1 的运行速度很快,但是它的数据容量很小,CPU 能在 L1 里命中的概率大概在 80% 左右(日常使用的情况下);L2、L3 的机制也类似如此,这样一来,CPU 需要在内存中读取的数据大概为 5%-10%,其余数据命中全部可以在 L1、L2、L3 中做到,大大减少了系统的响应时间,总的来说,所有 CPU 读取数据的顺序都是先缓存再内存。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__0809 返回首页
实付 49.00元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值