What is CPU?

Posted on Sat, Jun 24, 2023 Operating System

最近遇到一件怪事,用服务器环境编译的速度竟然比在本地环境编译还慢(总体速度是快的,有些模块编译时间慢)。服务器的 CPU 性能是远远大于本地环境,当然编译速度不仅和 CPU 性能有关,也包含以下因素,

先抛开其他因素不谈吧,趁着这个机会总结一下 CPU 基础知识。

What is CPU?

CPU(Central Processing Unit) 中央处理器经常被称为是计算机的大脑,可以这样理解,与身体器官类比很形象的描述了 CPU 在众多计算机组件的重要性。但这仅是初步的理解,CPU 并不能生成指令,而是一些软件生成指令后,CPU 再去处理执行,让软件能在系统上完美融洽的运行。计算机的处理速度和响应时间在很大程度上取决于 CPU。除此之外,也会受到内存、核心处理能力和其他因素的影响。有时我们会遇到以下问题:

  • 程序运行很慢
  • 系统卡顿死机
  • 视频图形渲染卡顿
  • 软件运行很慢

让我们一起定位是不是 CPU 的性能问题,有什么方法进行调优,首先看下 CPU 到底在计算机中做了哪些工作。

What does a CPU do in a computer?

  1. 执行程序:从内存中读取指令,并执行。通过时间分片技术,可实现多任务同时执行。
  2. 数据处理:处理各种数据,包括数字、字符、图像、音频等。通过执行数学运算、逻辑判断、数据转换等操作,以实现对数据的处理和分析。
  3. 控制硬件设备:控制计算机系统中的各种硬件设备,如硬盘驱动器、显示器、键盘、鼠标等。接收设备信号,发送控制信号,从而实现用户与计算机的交互。
  4. 网络通信:处理网络数据包,进行数据传输和接收。
  5. 数据存储管理:管理内存和缓存,包括数据的读取、写入、分配和回收等。将数据从内存中读取到寄存器或缓存中进行处理,并将结果写回内存。

总的来说,CPU是计算机系统的核心处理器,它执行程序指令、处理数据、控制硬件设备,以及支持各种应用和任务的执行。

CPU Components

  1. 控制单元(Control Unit):负责协调和控制CPU内部的各个部件以执行指令。它包括指令寄存器、程序计数器和指令解码器等。
  2. 算术逻辑单元(Arithmetic Logic Unit,简称ALU):ALU是CPU的关键组成部分,负责执行算术和逻辑运算,如加法、减法、乘法、逻辑与、逻辑或等。ALU通常包含运算器和状态寄存器。
  3. 寄存器(Registers):寄存器是CPU内部的高速存储器,用于存储指令、数据和中间结果。CPU包含多个寄存器,包括通用寄存器、程序计数器、指令寄存器等。寄存器具有非常快的访问速度,用于加快指令的执行和数据的传输。
  4. 数据通路(Data Path):数据通路是连接CPU内部各个部件的路径,用于传输数据和控制信号。它包括数据总线、地址总线和控制总线等。数据通路起到了连接各个部件的作用,使得数据可以在CPU内部进行传输和处理。
  5. 缓存(Cache):缓存是CPU内部的高速存储器,用于临时存储频繁访问的数据和指令。缓存分为多级,包括一级缓存(L1 Cache)、二级缓存(L2 Cache)和三级缓存(L3 Cache)。缓存的存在可以提高CPU对数据的访问速度,减少对主存的访问次数。
  6. 总线(Bus):总线是连接CPU和其他计算机组件的通信通道。它包括数据总线、地址总线和控制总线,用于传输数据、地址和控制信号。总线起到了连接CPU与其他硬件设备的作用,使得CPU可以与内存、输入输出设备等进行数据交互。

CPU History

CPU的发展轨迹可以追溯到计算机的起源,并经历了多个阶段和重要的技术进步。以下是CPU发展的一些关键阶段和里程碑:

  1. 早期计算机:在早期计算机时代,CPU是基于真空管和继电器等电子元件构建的。这些计算机的处理速度非常慢,体积庞大,并且耗电量很高。
  2. 集成电路:20世纪60年代,随着集成电路的发展,CPU开始采用集成电路芯片的形式。这使得CPU的体积减小、功耗降低,并且性能得到了提升。
  3. 微处理器的出现:1971年,英特尔公司推出了第一款商用微处理器Intel 4004。微处理器是一种将CPU的功能集成到单个芯片上的技术,它标志着个人计算机时代的开始。
  4. 摩尔定律:摩尔定律是指每18至24个月,集成电路上可容纳的晶体管数量会翻倍,价格保持不变。这一定律促进了CPU的快速发展,使得晶体管密度和性能不断提高。
  5. 多核处理器:为了进一步提高性能,CPU开始采用多核设计,即将多个独立的处理核心集成到单个芯片上。多核处理器可以同时执行多个任务,提高多线程应用的效率。
  6. 架构优化和指令集:随着时间的推移,CPU的架构得到不断优化和改进,以提高指令执行效率和功耗控制。同时,新的指令集和技术(如SIMD指令集、超线程技术等)的引入也进一步提高了CPU的性能和多任务处理能力。
  7. 高性能计算:为了满足高性能计算需求,出现了专用的处理器架构,如图形处理器(GPU)、向量处理器(Vector Processor)和协处理器等。这些处理器在特定领域或任务上具有出色的性能和并行计算能力。

总的来说,CPU经历了从早期的简单电子元件到现代复杂的微处理器的演化过程。随着技术的不断进步,CPU在性能、功耗、集成度和并行处理能力等方面取得了巨大的发展,推动了计算机和信息技术的飞速进步。

What makes a CPU good?

Clock Speed

Clock Speed 决定了 CPU 在一个周期内可以执行多少指令,它代表了执行指令的速度。通常以赫兹(Hz)为单位表示,如2.4 GHz(即每秒钟执行24亿个时钟周期)。然而,由于较高的速度会产出额外的热量和更高的功耗,导致时钟速度的进步开始停滞不前。

Cores

Cores 是指独立的处理单元数量。多核心设计使得CPU能够同时处理多个任务和线程,提高处理器的并行计算能力。每个核心在逻辑上独立,拥有自己的寄存器、缓存和执行单元,可以独立执行指令和处理数据。多核的 CPU 对于多线程应用程序、多任务处理和并行计算任务非常有用,然而,对于单线程程序无法充分利用多核并行能力,因此不会带来明显的性能提升。

Hyper-Threading

多线程技术允许在一个CPU核心上同时执行多个线程。通过在一个核心上切换执行不同的线程,CPU可以实现并行处理和提高系统的整体性能。Hyper-Threading 的可用性取决于CPU型号和制造商。

Cache

Cach 用于临时存储频繁使用的数据和指令,以加速访问数据。cache 大会提高缓存命中率,减少内存访问延迟,但过大会带来更高成本和功耗,以及延迟和访问时间过长的问题。

Clock speed vs. Cores

可将 Clock speed 视为跑车,Cores 视为卡车。在选择CPU时,取决于具体的使用场景和需求:

How to check Key CPU Metrics

CPU Usage

用于衡量 CPU 忙于执行任务的时间百分比。表示 CPU 上的工作负载,高 CPU 使用率表示工作负载过重。可以使用 top 进行查看:

CPU usage: 3.41% user, 4.43% sys, 92.15% idle

以上表示:

CPU Load Average

表示在特定时间段内 CPU 的平均工作量。CPU 负载平均值的计算方法是定期对 CPU 使用情况进行采样,然后在指定的时间段内对这些值求平均值。时间段通常定义为过去 1、5 和 15 分钟,分别表示短期、中期和长期负载平均值。可使用 top 查看:

Load average: 0.50 (1 minute), 0.75 (5 minutes), 0.90 (15 minutes)

在此示例中,1 分钟间隔的平均负载为 0.50,这意味着 CPU 在过去一分钟内平均仅以 50% 的容量使用。5 分钟 75% 的使用率, 15 分钟 90% 的使用率。

通常,平均负载低于 1.00 表明 CPU 具有空闲时间,可以有效地处理额外的工作负载。平均负载高于 1.00 表示 CPU 正在充分利用,并且可能对处理任务有更高的需求。负载平均值高于 2.00 表示 CPU 工作负载相对较高,表明 CPU 正在接近或以最大容量运行。

CPU Clock Speed

执行以下命令可以查看每个CPU核心的当前时钟频率:

watch -n 1 "cat /proc/cpuinfo | grep MHz"

CPU Core Count

运行 lscpu 命令,它将显示有关 CPU 的详细信息,包括核心数量、线程数量等。 CPU(s)Core(s) per socket 字段,表示系统中的CPU核心数量。

CPU Thread Count

运行 lscpu 命令, Thread(s) per core 字段,表示每个CPU核心的线程数量。通过将此值乘以核心数量,可以得到CPU的线程总数。

CPU Scaling Governor

CPU Scaling Governor(CPU频率调节器)是用于管理和调整CPU频率的软件模块。控制着CPU在不同工作负载下的运行频率,以平衡性能和功耗之间的关系。不同的CPU scaling governor算法可以根据需求调整CPU频率,以实现最佳的性能和能耗平衡。默认的CPU scaling governor通常是 ondemand 或 powersave 。

查看当前的 CPU scaling governor:在终端中执行以下命令:

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

Summary

本文介绍了 CPU 的定义和组成,以及 CPU 的发展历程和性能指标。其中,Clock Speed、Cores、Cache 和 Hyper-Threading 是影响CPU性能的关键指标。此外,本文还介绍了如何检查 CPU 的关键指标,如 CPU 使用率、CPU 负载平均值、CPU 时钟频率、CPU 核心数量、CPU 线程数量和 CPU Scaling Governor 等。

Reference