Wrayの知识库 Wrayの知识库
首页
  • Java 基础
  • Java 集合
  • Java 并发
  • Java IO
  • JVM
  • Spring Framework
  • Spring Boot
  • Spring Cloud
  • Spring Security
  • MySQL
  • Redis
  • 计算机基础
  • 操作系统原理
  • Linux
  • MacOS
  • Windows
  • 系统工程与研究专题
  • AI 基础
  • 大模型基础
  • Prompt 工程
  • RAG 检索增强生成
  • Agent 智能体
  • AI 应用开发
  • AI 工程化
  • AI 安全与治理
  • AI 面试与设计题
  • 纸质书
  • 电子书
  • 学习课程
疑难杂症
GitHub (opens new window)
首页
  • Java 基础
  • Java 集合
  • Java 并发
  • Java IO
  • JVM
  • Spring Framework
  • Spring Boot
  • Spring Cloud
  • Spring Security
  • MySQL
  • Redis
  • 计算机基础
  • 操作系统原理
  • Linux
  • MacOS
  • Windows
  • 系统工程与研究专题
  • AI 基础
  • 大模型基础
  • Prompt 工程
  • RAG 检索增强生成
  • Agent 智能体
  • AI 应用开发
  • AI 工程化
  • AI 安全与治理
  • AI 面试与设计题
  • 纸质书
  • 电子书
  • 学习课程
疑难杂症
GitHub (opens new window)
  • 操作系统概述
  • 计算机基础

    • 计算机系统全景
    • 数制编码与数据表示
    • CPU架构与指令执行
      • 1. 学习目标
      • 2. 知识框架
      • 3. 核心概念
      • 4. 机制与实践
      • 5. 常用命令与工具
      • 6. 常见误区
      • 7. 进阶研究方向
      • 8. Tips 快问快答
      • 9. 总结
    • 内存层次与缓存
    • 总线IO与设备模型
    • 文件存储与磁盘
    • 网络基础与协议栈
    • 虚拟化容器与云基础
  • 操作系统原理

  • Linux

  • MacOS

  • Windows

  • 系统工程与研究专题

目录

CPU架构与指令执行

CPU 是程序真正执行的地方。高级语言隐藏了寄存器、指令、流水线和缓存一致性,但性能优化、并发问题和系统调用开销最终都会回到 CPU 执行模型。

# 1. 学习目标

  • 理解 CPU 核心、线程、寄存器、指令集和上下文切换。
  • 能解释为什么 CPU 密集型任务和 IO 密集型任务调优方式不同。
  • 能从 CPU 视角理解锁竞争、缓存失效和调度开销。

# 2. 知识框架

CPU架构与指令执行
├─ 入门:建立术语、对象和日常操作的直觉
├─ 进阶:理解机制、边界和跨平台差异
└─ 专家:能排障、能设计、能阅读实现和研究材料

CPU 学习路线可以从“指令顺序执行”开始,再进入流水线、乱序执行、缓存和多核一致性。工程实践中重点关注利用率、负载、上下文切换和热点代码。

# 3. 核心概念

主题 说明 工程关注
指令集 CPU 能理解的机器指令集合,如 x86-64、ARM64 软件兼容性、镜像架构、编译目标
寄存器 CPU 内部高速存储单元 函数调用、上下文切换、汇编调试
上下文切换 CPU 从一个执行流切换到另一个执行流 线程过多、锁竞争、调度延迟
缓存一致性 多核缓存之间保持数据一致的协议和机制 共享变量、伪共享、内存屏障

# 4. 机制与实践

  1. CPU 飙高时先区分用户态、内核态、等待 IO 和虚拟化 steal 时间。
  2. 线程池大小不要只按 CPU 核数机械设置,要结合任务是否阻塞。
  3. 热点循环中减少共享写、锁竞争和不必要的对象分配。

# 5. 常用命令与工具

命令或工具 作用 使用建议
top 观察进程 CPU 和系统负载 快速定位高 CPU 进程
perf top 查看 Linux CPU 热点函数 需要权限和符号信息配合
sysctl -n machdep.cpu.brand_string 查看 macOS CPU 型号 确认架构和芯片代际

# 6. 常见误区

  • 看到 CPU 高就扩容:如果是死循环、锁竞争或内核态异常,扩容只能掩盖问题。
  • 忽略上下文切换:线程越多不一定越快,频繁切换会吞掉 CPU 时间。
  • 混淆负载和利用率:load average 高可能来自 CPU 队列,也可能来自不可中断 IO 等待。

# 7. 进阶研究方向

  • 学习 CPU 流水线、分支预测和乱序执行的基本原理。
  • 用 perf、火焰图或采样 profiler 分析真实热点。
  • 阅读并发模型中内存屏障和缓存一致性的资料。

# 8. Tips 快问快答

Q:CPU 核数越多程序一定越快吗?

A:不一定。程序必须有足够并行度,并且不能被锁、IO、内存带宽或单线程瓶颈限制。

Q:用户态 CPU 和内核态 CPU 有什么区别?

A:用户态通常是应用代码执行时间,内核态通常是系统调用、网络、文件、调度等内核工作时间。

Q:为什么线程太多会变慢?

A:线程太多会增加调度、上下文切换、缓存失效和锁竞争,吞掉本应用真正做业务的时间。

# 9. 总结

CPU 不是抽象的“算力数字”,而是由指令、缓存、核心、调度共同构成的执行系统。理解它能帮助你判断瓶颈到底在代码、内核、硬件还是调度策略。

上次更新: 2026/06/25, 10:02:19
数制编码与数据表示
内存层次与缓存

← 数制编码与数据表示 内存层次与缓存→

Copyright © 2023-2026 Wray | 鄂ICP备2024050235号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式