电脑硬件性能:HDD + SSD + CPU + GPU

任务管理器:性能参数详解

2023英伟达显卡排名天梯图(已更新)

一、电脑的硬件组成

电脑是由多个硬件和软件组件组成的复杂系统,它们协同工作以执行各种任务。电脑的装机配件模拟选择

电脑的硬件组成(图解)

  • 硬件组件:
  • 1.1 中央处理器(CPU,Central Processing Unit)
    功能:用于执行计算机程序中的指令,是电脑的大脑。
    类型:制造商(Intel、AMD)、架构(x86、ARM)
  • 1.2 图形处理器(GPU,Graphics Processing Unit)
    功能:用于处理图形和图像任务(图形渲染和加速计算)
    用途:用途(集成显卡、独立显卡)、产品(RTX、GTX)
  • 1.3 内存(RAM,Random Access Memory,随机存取存储器)
    功能:用于存储正在运行的程序和数据,是CPU临时性的快速存储。
    类型:容量(GB)、类型(DDR3、DDR4)等。
  • 1.4 显卡(VRAM,Video Random Access Memory,显存 / 视频内存)
    功能: 用于存储图形和图像数据,是GPU临时性的快速存储。
    类型:容量(GB)、类型(GDDR5、GDDR6)等。
  • 1.5 存储设备
    • 存储阵列存储阵列
      • 将多个硬盘驱动器组合在一起,以提供高容量、高性能和/或冗余性。
      • 专门设计用于存储和管理大量数据的硬件设备。存储阵列可用于企业级数据中心、服务器和其他需要大容量和可靠性的应用场景。
    • 机械硬盘HDD:大容量、较慢的机械存储。
    • 固态硬盘SSD:小容量、高速的闪存存储。
    • 移动硬盘:机械存储,大型便携,通过USB接口连接到计算机。
    • 光盘驱动器:使用光学技术(激光束)来读写数据。包括CD-ROM、DVD-ROM和Blu-ray等
    • U盘:闪存存储,小型便携,通过USB接口连接到计算机。
  • 1.6 主板
    功能:连接和协调所有硬件组件,提供电源和数据传输。
    包括:CPU插槽、内存插槽、扩展插槽(PCIe)、输入输出端口等。
  • 1.7 电源供应器
    功能:提供电能给电脑(所有硬件组件)。
    包括:电源单元(PSU)和电源线。
  • 1.8 机箱
    功能:容纳和保护电脑内部组件。
    类型:台式机箱、小型机箱、游戏机箱等。
  • 1.9 冷却系统
    功能:保持硬件温度在可接受范围内。
    包括:风扇、散热器、散热片等。
  • 外部设备
  • 2.1 输入设备:键盘、鼠标、触摸板等。
  • 2.2 输出设备:显示器、音响、耳机、打印机、扫描仪、投影仪、摄像头等。
  • 2.3 性能设备:声卡、网卡等
  • 2.4 移动设备:U盘、移动硬盘等
  • 软件组件:
  • 3.1 操作系统(OS)
    功能:管理硬件资源,提供用户界面,执行应用程序。
    分类:Windows、Mac OS、Linux等。
  • 3.2 驱动程序
    功能:使硬件和操作系统之间能够通信。
    分类:显卡驱动、打印机驱动等。
  • 3.3 应用程序
    功能:执行特定任务,如办公套件、图形设计工具、游戏等。
    分类:办公软件、娱乐软件、开发工具等。

二、机械硬盘(HDD) + 固态硬盘(SSD)

2.1、简介(图解)

机械硬盘(Hard Disk Drive,HDD)和固态硬盘(Solid State Drive,SSD)是计算机存储设备的两种主要类型。
在这里插入图片描述

HDDSSD
工作原理数据存储在具有磁性涂层的金属盘上,并通过安装在控制器上的磁头采用机械运动来读取或写入使用闪存存储器(有一堆NAND闪存颗粒)来存储数据。数据通过电子访问存储芯片来读取或写入
性能较慢的机械存储(机械访问导致较长的读取和写入延迟)高速的闪存存储(电子访问具有高速的读取速度与传输速度、更短的访问时间)
耐久性易损坏(有移动组件(即具有物理运动的组件)。在一定的冲击下会损坏;磁力会导致故障;耗电量较大)更耐用(没有移动部件。且在断电时也能保留电荷从而保留数据。)
容量大容量小容量(上限比HDD低)
价格便宜更昂贵
适用场景适用于大容量存储、成本较低和无需数据快速访问的场景(如数据归档、备份等)适用于高性能、快速数据访问和响应时间的应用(如操作系统启动盘、游戏加载、视频编辑等)

2.2、读写性能的影响因素

在这里插入图片描述

2.2.1、HDD:寻道时间 + 旋转延迟 + 数据传输时间

机械硬盘读写性能的影响因素:寻道时间 + 旋转延迟 + 数据传输时间
在这里插入图片描述
windows下如何查看磁盘IO性能

2.2.2、SSD:读写速度 + 响应时间

  • 读写速度IOPS(关键指标):IOPS即每秒的读写次数(单位MB/s、GB/s)。更高的读写速度意味着更快的数据传输。
  • 响应时间(Response Time): 对读写请求的响应速度,通常以毫秒为单位。低响应时间表示更快的存储系统响应。
  • 闪存类型:SSD 中使用的 NAND 闪存分为不同类型,如 SLC(Single-Level Cell)、MLC(Multi-Level Cell)、TLC(Triple-Level Cell)和 QLC(Quad-Level Cell)。SLC 通常具有更高的性能和更长的寿命,但也更昂贵
  • 接口类型:SSD 的接口类型包括 SATA、NVMe 和 PCIe。NVMe 和 PCIe 接口提供更高的带宽和更低的延迟
  • 队列深度和并发访问:支持更深的队列和更高的并发访问的 SSD 能够更好地处理多任务和大量并发请求。
  • 温度敏感:过高或过低的温度可能会影响性能。温度过高还可能导致固态硬盘降低频率以防止过热。
  • TRIM 支持:用于在固态硬盘上删除无效数据的命令,有助于垃圾回收和提高写入效率。
  • 写入次数和寿命:NAND 闪存有写入次数的限制,不同类型具有不同的寿命和写入次数限制,影响长期使用性能。

三、中央处理器(CPU)

中央处理器(CPU):是计算机系统中的大脑,负责(根据指令的顺序逐步)执行各种指令来完成计算、逻辑操作、数据处理和控制流程等任务。
CPU结构的简单理解

3.1、CPU由运算器、控制器和存储器组成

在这里插入图片描述

CPU由运算器、控制器和存储器组成。

  • 运算器(Arithmetic Logic Unit,ALU):负责执行算术运算(如加法、减法等)和逻辑运算(如与、或、非等),以及其他数值计算和逻辑操作。
  • 控制器(Control Unit,CU):负责控制数据流和指令流,以确保程序按照正确的顺序执行。如:从内存中读取数据、执行计算、存储结果等。
    • 控制器从内存中读取指令,解码指令并将其发送到适当的部件执行。
  • 存储器(Memory):是CPU用于存储数据和指令的地方。
    • 存储器包括寄存器、缓存和主存。
      • 寄存器(Register):用于存储CPU正在处理的数据和指令。—— 是最快的存储器
      • 缓存(Cache):用于暂存频繁使用的数据和指令。—— 是位于CPU内部的高速存储器
      • 主存(Main Memory):用于存储程序和数据。—— 是CPU外部的存储器

3.2、CPU性能指标:主频 + 外频 + 总线频率 + 倍频系数 + 缓存 + 工作电压 + 制程 + 超线程 + 核心数 + 线程数 + 指令集架构 + 热设计功率 + 每时钟周期指令数

百度百科:CPU性能参数

CPU的性能主要通过以下几个关键指标来衡量:

  • 主频(Clock Speed): 主频是CPU每秒钟可以完成的时钟周期数,通常以赫兹(Hz)为单位。常见的单位有GHz(千兆赫兹)。主频越高,CPU每秒钟可以完成的操作次数就越多,理论上性能也更强。主频较高的CPU通常执行单线程任务更为迅速,但也受限于其他因素如架构和并行处理能力。
  • 外频(Front-Side Bus Frequency): 外频是指CPU与系统内存、I/O设备等外部组件之间的通信频率。外频直接影响系统的带宽和数据传输速度。较高的外频有助于减少CPU和内存、硬盘之间的通信延迟,进而提高整体性能。
  • 总线频率(Bus Frequency): 总线频率指的是整个计算机系统中数据总线的传输速率,通常用于CPU、内存和其他硬件之间的通讯。总线频率越高,数据传输速率越快,有助于提升系统的整体性能。
  • 倍频系数(Multiplier): 倍频系数是将外频提升到CPU主频的一个倍数。例如,若外频为100 MHz,倍频为40,则CPU的主频为4.0 GHz。倍频系数越高,CPU的主频就越高,从而提升计算能力。倍频系数通常可以在超频时调整,以提高性能。
  • 缓存(Cache):缓存是位于CPU内部或与其紧密连接的小容量、高速度存储区,用来临时存储经常访问的数据和指令。通常有三种级别的缓存:L1、L2和L3缓存。L1最快但容量最小,L3最大但速度相对较慢。较大的缓存可以减少CPU访问主内存的频率和延迟,从而提高系统性能。
  • 工作电压(Operating Voltage):工作电压是指CPU在正常工作状态下所需的电压。较高的电压能提供更多的功率,支持更高的频率和性能,但也会产生更多的热量。 较低的电压有助于降低功耗和热量,提高能效,但可能会影响CPU性能。
  • 制程(Manufacturing Process): 制程指的是CPU芯片制造工艺中的节点大小,通常以纳米(nm)为单位。较小的制程意味着芯片中晶体管的尺寸较小,集成度更高。更小的制程有助于提高CPU的性能和能效,减少功耗和发热。同时,小制程允许更高的频率和更多的核心。
  • 超线程(Hyper-Threading):超线程技术是Intel的一项技术,它允许每个物理核心模拟为两个逻辑核心,从而提高多任务处理能力。启用超线程的CPU能够在每个核心上处理两个线程,这提高了并行计算能力,尤其在多任务和高负载场景下表现更好。
  • 核心数(Core Count):核心数是指CPU中独立的处理单元。现代处理器通常具有多个核心,每个核心可以独立执行任务。多核CPU能够同时处理多个任务,提高系统的多任务处理能力,尤其在多线程应用(如视频编辑、游戏等)中,性能提升明显。
  • 线程数(Thread Count):线程数指的是CPU能够同时运行的独立线程数。线程是操作系统调度的基本单位,现代CPU通过超线程技术可以让每个物理核心同时处理多个线程。更高的线程数通常意味着更强的并发处理能力,尤其在需要大量并行计算的应用中(如数据分析、科学计算等)。
  • 指令集架构(ISA):指令集架构决定了CPU能够理解和执行的指令集合。常见的架构有x86、ARM等。指令集架构决定了CPU执行特定类型任务的效率及其兼容性。不同的指令集在不同应用场景中的表现不同。
  • TDP(热设计功率):TDP是CPU在最大负载下预计的功耗,通常以瓦特(W)为单位。它是衡量CPU散热需求的关键参数。较高的TDP意味着CPU需要更多的散热处理,可能会增加系统的热量和功耗,影响系统稳定性。
  • IPC(每时钟周期指令数):IPC是指CPU在每个时钟周期内能够执行的指令数量。IPC高的CPU每个时钟周期可以执行更多的任务,从而提升性能。高IPC表示CPU在处理复杂任务时更高效,能够在相同时钟频率下提供更好的性能。

性能饱和:当系统中的某个组件(如CPU)达到其最大处理能力时,我们称之为性能饱和。例如,当CPU的负载达到100%,即无法再处理更多的任务,系统的整体性能就达到了瓶颈。如果其他组件(如内存、硬盘等)没有相应提高,系统就无法继续提高性能。

3.3、CPU容量 —— 决定了计算机系统在执行任务时的响应能力和处理效率

CPU容量:是CPU性能的体现,主要反映其执行任务的能力,包括以下几个方面:

  • 任务执行速度:CPU的处理速度决定了它能多快地完成计算任务。时钟频率、缓存、指令集架构等因素共同影响执行速度。
  • 并发处理能力:现代CPU通常有多个核心和线程,能够同时处理多个任务,提升并发性能。这使得它在多任务处理和高负载的情况下表现更好。
  • 任务复杂性:CPU容量还受任务复杂性的影响。例如,简单的数学运算和控制指令可以快速完成,而图像处理、大数据分析等复杂计算任务则需要更强大的处理能力。
  • 计算资源效率:CPU的架构设计决定了其处理资源的利用效率。例如,指令集优化、超线程技术和高效的缓存管理等可以提高CPU在执行特定任务时的效率。

CPU容量决定了计算机系统在执行任务时的响应能力和处理效率。更高的CPU容量通常意味着更快的任务处理、更强的多任务处理能力以及更高效的计算资源利用,因此选择适合的CPU容量对于构建高性能计算机系统至关重要。

3.4、CPU利用率 —— 在一定时间内用于执行任务的时间比例,通常以百分比表示。

震惊,用了这么多年的 CPU 利用率,其实是错的

CPU利用率(CPU usage)在一定时间内,CPU用于执行计算任务的时间比例,通常以百分比表示。
公式 = (计算时间 / 总时间) = (1 - 空闲时间 / 总时间)

这表明CPU的负载情况,但需要注意的是," 计算时间 " 并不仅仅指程序执行的时间,还包括所有由CPU进行的后台任务、内核操作等。

  • CPU利用率的组成:
    • 系统CPU使用率:表示CPU在内核态执行系统任务(例如进程调度、内存管理、设备驱动等)所消耗的时间。系统占用的时间较高时,表示操作系统在进行大量的后台操作。
    • 用户CPU使用率:CPU用于执行用户应用程序的时间。无论是前端程序还是后台进程,所有用户级的代码执行都会占用这部分CPU时间。
  • 误解与注意事项:
    • 100% CPU利用率:很多人认为CPU利用率100%意味着系统已经“满负荷”运转,其实并不完全如此。100%的CPU利用率可能是由于某个进程占用了全部CPU资源,或者系统正在执行大量高优先级的任务。如果这种情况长时间持续,确实可能导致硬件过热或缩短CPU的使用寿命。但如果CPU利用率持续在较高水平且系统表现正常,通常表示它正在高效处理任务。
    • 0% CPU利用率:理论上,如果系统没有在执行任何任务,CPU的利用率可以接近0%。然而,实际上,由于操作系统本身需要一些后台任务(如系统进程、守护进程等),所以CPU利用率通常不会达到完全为零。

3.5、CPU利用率与多线程的关系

时间片(Time Slice):是操作系统分配给每个线程或进程的最小时间单位。

  • CPU并发执行将CPU时间划分为多个时间片,使得多个线程或进程分别在不同的时间片上同时运行,从而实现在一个CPU上并发执行。
    • 时间片的大小:由操作系统的调度算法和系统配置决定。通常在几毫秒到几十毫秒之间。较小的时间片可以提高系统的响应速度,但可能增加线程切换的频率;反之亦然。
  • 线程切换当一个线程或进程的时间片用完时,操作系统会强制进行线程切换,即暂停当前执行的线程或进程,并选择下一个可运行的线程或进程分配给 CPU 执行。通过在各个线程之间来回切换,实现了多任务的并发执行。

多线程与CPU利用率的关系

  • 当CPU利用率未达到饱和时,多线程并行计算可以提高整体性能。
  • 当CPU利用率已经饱和时,继续增加线程将使得整体性能下降,出现 “线程切换” 和 “调度开销” 等问题。
    • 线程切换开销:从一个正在执行的线程切换到另一个线程的过程。在切换过程中,操作系统需要上下文切换:保存当前线程的上下文信息(寄存器状态、程序计数器等),并加载下一个线程的上下文信息,使得另一个线程可以继续执行。
    • 线程调度开销:由操作系统执行线程调度所需的开销。开销包括 (选择合适的调度算法)决定下一个要执行的线程、管理线程队列等操作。在多线程应用中尤为显著,尤其是在高并发、线程数量众多的情况下。

为了最大化性能,需要进行合理的线程管理。
(1)减小线程数量
(2)减少线程切换频率:时间片用完、适当的线程数量、线程主动让出CPU(time.sleep())、阻塞和唤醒、I/O操作
(3)使用线程池:使用 ThreadPoolExecutor 类创建线程池。可以指定线程池的大小,决定可以同时执行的线程数量。

举例说明

  • 已知:若指定线程数为40,其中前25个线程的CPU利用率已经达到100%。
  • 计算:前25个线程在饱和状态下争夺有限的CPU资源,而后15个线程需要等待前面的线程释放资源,故后15个线程的每个线程的执行时间较长。

四、图形处理器(GPU)

4.1、基础知识

4.1.1、显卡 —— 是安装 GPU 的硬件设备

显卡(Graphics Card,显示适配器,Graphics Processing Unit Card,图形处理单元卡)是一块插在计算机主板上的扩展卡,用于输出图形信号并控制显示器的显示。

  • 组成部分:显卡核心(GPU),显存、电路板(PCB)、金手指、供电 & 显示接口、以及散热器其他相关硬件。

在这里插入图片描述

【显卡科普】小白必看的入门显卡科普,关于显卡的原理、结构、作用

4.1.2、GPU —— 是一种专用于图形或图像计算的处理器

GPU(Graphics Processing Unit,图形处理单元)是一种专用于处理图形和图像相关计算的处理器。如:渲染、图像处理、计算机视觉等。

  • GPU 具有大量的并行处理单元(CUDA cores 或 stream processors),这使得它们在执行大规模并行计算任务时具有显著的优势。
  • GPU是图像处理芯片,因为GPU功耗很高、背面电流过大,都是焊接在显卡上。
  • 独立显卡:将GPU焊在显卡的电路板上。
  • 集成显卡:将GPU和CPU集成在一起。
  • CPU是主板上的一块芯片。GPU是显卡上的一块芯片。

4.1.3、显存 —— 是显卡上的一种专用 GPU 内存。

显存(Graphics Memory):显存是显卡上的一种专用内存,用于存储图形数据、纹理、帧缓冲区等与图形处理相关的数据。

  • 显存的容量决定了显卡可以处理的图形数据大小和复杂度,通常用于存储图像、纹理、帧缓冲区和其他与图形渲染相关的数据。

4.1.4、CUDA —— 用于在 GPU 上进行并行计算的编程模型

CUDA(Compute Unified Device Architecture,统一计算设备架构)是 NVIDIA 公司开发的,用于在 NVIDIA GPU 上进行通用计算的,一种并行计算平台和编程模型。

  • CUDA 提供了一组 API 和工具,使程序员能够利用 GPU 的并行计算能力进行加速计算。CUDA 程序可以使用 C、C++、Python 等编程语言编写,并通过 NVIDIA 提供的 CUDA 编译器进行编译和优化。
  • 使用 CUDA 编程,程序员可以直接操作 GPU 上的数据和执行核心,并利用 CUDA 提供的并行计算模式和优化技术实现高性能的并行计算任务。

4.2、GPU内存 —— 专用 GPU 内存 + 共享 GPU 内存

在这里插入图片描述

  • 专用GPU内存(显存):详见上述。
  • 共享GPU内存:是 win10 系统从主存中专门为 GPU 划分的内存。当显存不够使用时,超出部分将转移到共享GPU内存(即主存)中,以防止程序奔溃,但速度会明显减慢。

在使用多进程时:
(1)若迭代任务 A 的整体耗时(小于)内部每个操作的耗时之和,则多进程可以加速整个迭代过程。
(2)若迭代任务 A 的整体耗时(大于)内部每个操作的耗时之和,则多进程会增加额外的开销 —— 此时的多进程相当于串联执行。

4.3、代码实现

GPU计算流程:CPU -> GPU -> CPU

numba.cuda的GPU计算流程(区别)

(1)将数据从主机内存(CPU)传输到设备内存(GPU)。
(2)在 GPU 上执行并行计算任务。
(3)将计算结果从设备内存传输回主机内存。

import torch

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print(device)  # cuda

# (1)数据准备:创建两个张量,并将它们移动到 GPU 中
x = torch.tensor([1, 2, 3]).to(device)
y = torch.tensor([4, 5, 6]).to(device)

# (2)并行计算:在 GPU 上执行向量加法
result = x + y
print(result)  # tensor([5, 7, 9], device='cuda:0')
 
# (3)数据传输:将计算结果从 GPU 传输回 CPU
result_cpu = result.cpu().numpy()
print(result_cpu)  # [5 7 9]

GPU启动方式:异步计算 + 同步计算

GPU函数的启动方式是异步计算:

  • 异步计算:CPU不会等待GPU函数执行完毕后,才执行下一行代码。
  • 同步计算:在调用的GPU函数后面添加torch.cuda.synchronize() —— 表示CPU需要等待GPU函数执行完毕后再计算。
import torch
import time

def asynchronous_computation(x, y):
    # 异步计算:在 GPU 上执行矩阵相乘
    start_time = time.time()
    torch.matmul(x, y)
    print(f"异步计算执行时间:{time.time() - start_time: .4}", )
    """
    (1)在异步计算中,调用 torch.matmul(x, y) 后,GPU 会开始计算矩阵乘法,但 CPU 并不会等待计算完成,代码继续执行。
    (2)在异步计算中,由于 CPU 不等待 GPU 完成任务,所测量的时间通常为 0.0 或非常短,表示代码的执行时间主要是 CPU 处理任务,而 GPU 计算并未同步完成。
    """

def synchronous_computation(x, y):
    # 同步计算:在 GPU 上执行矩阵相乘,并等待计算完成
    start_time = time.time()
    torch.matmul(x, y)
    torch.cuda.synchronize()  # 同步计算
    print(f"同步计算执行时间:{time.time() - start_time: .4}", )
    """
    在同步计算中,使用 torch.cuda.synchronize() 来确保 CPU 等待 GPU 完成所有任务后再继续执行。
    这时,代码会同步等待 GPU 完成矩阵乘法,计算时间包括了 GPU 的执行时间。
    """

if __name__ == "__main__":
    device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
    num = 20000
    x = torch.randn(num, num).to(device)
    y = torch.randn(num, num).to(device)
    print(x.shape, y.shape)
    asynchronous_computation(x, y)  # 同步计算
    synchronous_computation(x, y)  # 异步计算

"""
异步计算执行时间: 0.041
同步计算执行时间: 3.391
"""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖墩会武术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值