18

关于 CPU 你需要了解的(二)

 3 years ago
source link: https://mp.weixin.qq.com/s/owCWD9CTr860NF_0yJK6RQ
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

上一篇对 CPU 内部结构、CPU 指令集、SMP 和 NUMA 这三个方面做了简单介绍,这篇接着对如下两个知识点做介绍。

  • 超线程与超频

  • CPU 缓存

1.超线程和超频

很多同学应该听说过超线程这个概念,注意:它与多线程不是一个东西哈。那什么是超线程呢?

通常情况下, 一个 CPU 核心同一时刻只能处理一个线程 ,但是厂商为了能更好的利用 CPU 资源,充分的压榨 CPU 的能力,于是 利用核心的寄存器给 CPU 核心多设置了一个上下文 ,每个上下文就可以运行一个线程,那么在逻辑上就相当于多了一个 CPU 核心, 这就是超线程技术的原理 。注意,这只是在逻辑上让一个 CPU 核心变成了两个, 实际上还是只有一个核心

MnARvuF.jpg!mobile

如何开启超线程呢?通常是 在 BIOS 的设置里面进行开启 , 可以在 BIOS 中找找 Hyber Threading 或者 HT 关键字, 通常都是默认开启的 。开启超线程可以更好的支持我们平时的多任务工作,使得操作系统的响应速度更快。

超频是指人为通过某种技术手段提高 CPU 的频率 ,CPU 频率提高意味着处理能力更强。通常来说 CPU 在出厂时会将 CPU 的频率上限给锁定到某个阈值,这样可以使得 CPU 工作更稳定,寿命更长久。但是总有些技术爱好者比较喜欢用最少的钱获取较好的产品体验,将 CPU 的这个频率阈值限制破坏掉进行 CPU 超频,强行提升了 CPU 的性价比,这种行为在早几年是比较多见的。以前的 Intel 奔腾系列、赛扬系列经常被用来超频,那时候的制程是 90nm,CPU 主频是 3GHz 左右。现在估计比较少人去做超频了,毕竟在不超频的情况下,个人消费级别的 CPU 都 4 GHz 左右,好一点的甚至 5 GHz 往上,没必要再搞超频。

CPU 被锁频的原因除了商业因素外,主要是因为超频容易导致 CPU 损坏或者由于散热不好带来的问题。

2.CPU 缓存

现代的 CPU 一般来说都会有三级缓存: L1、L2、L3 ,所以 CPU 并不是直接与内存进行连接的,中间还隔着这几层 CPU 缓存。 在金字塔式存储体系中它位于自顶向下的第二层,仅次于 CPU 寄存器 ,所以 它的速度是比内存快很多,比寄存器稍慢一点。在容量上,L1、L2、L3 依次逐渐增大

iy636v7.jpg!mobile

CPU 缓存是 为了加快CPU读取数据的速度,同时也给内存一个缓冲期 ,因为 CPU 的速度实在是太快了,内存的速度完全跟不上,而 CPU 缓存的数据交换比内存快多了,如果缓存有对应的数据则直接从缓存读取数据就行。那 CPU 缓存与内存在速度方面究竟相差多大呢,请看下面这张图:

zAfamuz.jpg!mobile

可以看到 CPU 缓存与内存在速度方面相差大概是 100 倍左右 (图中的 DRAM 是内存)。CPU 缓存的组成如下图所示:

BvE3eqn.jpg!mobile

上面是 CPU 核心, 每个 CPU 核心会独占一套 L1 和 L2 缓存 ,最下面的 L3 缓存是所有 CPU 核心共享的 。同时还可以看到 L1 缓存是分成了两个部分:指令缓存、数据缓存,L2/L3 则不分

CPU 缓存主要是利用局部性原理将 CPU 的性能提升一大截 。什么意思呢?想象一下如果没有这些缓存,CPU 每次从内存获取一条指令都需要很久,那如果将 CPU 下一步获取的指令提前加载到这些 CPU 缓存中,CPU 就可以快速获取下一条指令,不用再从内存获取,这不就大大提升了 CPU 的处理速度吗?当 L1 找不到时,继续往 L2 找,如果 L2 找不到则继续往 L3 找,还是找不到的话就到内存里面找,一级级往下肯定能找到。 为了让 CPU 下一步想要的指令或者数据能预先加载到缓存,这就需要这些指令或者数据能聚集在一段连续的内存空间里,这就是局部性原理。 为了达到这个局部性原理,操作系统在编译源码或者调度进程时都会做大量的优化工作,让局部性原理更好的工作。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK