了解处理器:从婴儿到野兽
Source: Dev.to
请提供您想要翻译的文章正文内容,我将为您翻译成简体中文,并保持原有的格式、Markdown 语法以及技术术语不变。谢谢!
Source: …
基础
晶体管 是现代计算的基本构件。
处理器(CPU)不过是 数十亿个微小晶体管 安装在硅芯片上。
- 可以把晶体管想象成一个 开关,它可以将电子流 开 或 关,就像灯开关控制灯泡一样。
- 通过 开(1)和 关(0),晶体管表示所有计算机使用的二进制数据。
当数十亿个晶体管组合在一起时,它们就能执行复杂的计算。你在设备上进行的每一项任务,最终都被简化为一长串 0 和 1,由 CPU 处理后再转换回人类可读的输出。
CPU – 计算机的大脑
CPU(Central Processing Unit)执行指令,决定哪些任务运行以及运行顺序,并协调内存、存储和其他硬件之间的通信。
基本 CPU 循环
每条指令都遵循 Fetch → Decode → Execute → Writeback 循环(也称为 clock)。
| 阶段 | 发生了什么? |
|---|---|
| 取指 | 指令从内存(RAM 或缓存)中取出。 |
| 解码 | CPU 解释指令(例如,加法、移动、跳转)。 |
| 执行 | 实际工作被执行——算术、逻辑、内存访问等。 |
| 回写 | 结果写回寄存器或内存。 |
简单类比
想象你在玩游戏,向对手射出一颗子弹:
- 取指 – 你的操作(“射击”)被发送到 CPU。
- 解码 – CPU 将该操作翻译成二进制,以便计算对手的血量、位置等。
- 执行 – CPU 执行计算(子弹速度、距离、伤害)。
- 回写 – 游戏接收结果(“爆头,100 % 伤害”)并更新显示。
由于该循环持续重复,形成了 时钟。
- 时钟频率 = CPU 完成每个循环的速度。
- 1 GHz = 每秒 10 亿个循环。
- 更高的 GHz 通常意味着更高的单核性能,但这不是唯一因素。
时钟速度之外的性能因素
| 因素 | 重要原因 |
|---|---|
| 架构 | 决定每个时钟周期的使用效率。 |
| 缓存 | 将经常访问的数据存放在靠近核心的位置。 |
| 核心数量 | 更多核心可以并行处理更多任务。 |
| IPC (Instructions Per Cycle) | 显示每个核心在每个时钟周期可以执行多少指令。更高的 IPC → 即使在相同 GHz 下也能获得更好性能。 |
核心与线程
- 核心 = 独立的处理单元(“大脑”。)
- 线程 = 逻辑路径,使核心能够同时处理多个任务。
示例:
- 4 核心,8 线程 → 每个核心可以处理 2 个线程,产生 8 个任务同时进行的幻象。
注意: 更多核心并 不 自动意味着更快的性能;工作负载必须可并行化,且操作系统必须高效调度线程。
TDP(热设计功耗)
- 以瓦特(W)为单位。
- 低 TDP → 更凉爽、更节能(适合笔记本)。
- 高 TDP → 更高性能,但需要强大的散热。
Source: …
晶体管尺寸 – “3 nm”、 “2 nm”等
制造商宣传更小的工艺节点(例如 3 nm、2 nm)是为了表明 更小的晶体管。
-
为什么要缩小晶体管?
- 更多的晶体管可以装在相同的硅面积上 → 提高性能并降低功耗。
-
为什么不直接把芯片做大?
- 成本 – 更大的芯片需要更多的材料和能量,且每块晶圆能产出的芯片更少,导致价格上升。
- 散热 – 更大的芯片产生的热量更多,散热难度加大。
- 物理限制 – 设备(手机、笔记本、服务器)空间有限;大芯片无法适配纤薄设计,并且更难与其他组件连接。
因此,业界不断推动更小的晶体管几何尺寸。
缩小的限制
如果晶体管尺寸过小,电子泄漏会增加,这会导致功耗损失和可靠性问题。这是一种基本的物理极限,工程师在向亚纳米工艺迈进时必须加以管理。
Source: …
📚 清理后的 Markdown – “CPU & Memory Hierarchy”
为什么晶体管阻止不了电子
“如果晶体管太小,就无法阻止电子流动(公司已经在研究碳等其他材料)。”
寄存器 – 直接数据持有者
┌──────────────────────────────────┐
│ Hold immediate data to │
│ perform the action │
└──────────────────────────────────┘
类比 – 子弹游戏示例
寄存器就像玩家手里正拿着的那本正在阅读的书——用于下一条指令的超紧急数据。
控制单元 – 大脑
┌──────────────────────────────────┐
│ CONTROL UNIT 🧠 │
│ It's the brain, the core which │
│ takes the decision │
└──────────────────────────────────┘
类比 – 当玩家点击开火时,控制单元决定*“子弹造成多少伤害?对手失去多少血量?”*
其他直接数据(重要性不如寄存器)
┌──────────────────────────────────┐
│ Hold other immediate data which │
│ are important but not as │
│ critical as data in Register │
└──────────────────────────────────┘
类比 – 游戏全局的数据,如菜单设置、地图选择、皮肤选择、语音聊天等,虽然需要,但并不是即时计算子弹伤害时必需的。
从存储到 RAM → CPU
- 应用启动 – 程序从 ROM / HDD / SSD 读取并复制到 RAM。
- 程序运行时,驻留在 RAM 中。
- 其中一小部分 RAM 数据被复制到 CPU,以实现最快的计算。
房子类比
| 计算机部件 | 现实类比 |
|---|---|
| ROM / HDD / SSD | 图书馆的阅览室(存放所有书籍) |
| RAM | 书房(放置你近期需要的 10‑12 本书) |
| CPU / Processor | 书桌上的桌面(你正在阅读的那本书) |
| CPU Cache | 你的手——阅读时手里拿着的那本书 |
CPU 缓存 – 处理器内部的超高速小内存
“在游戏过程中,大量数据驻留在 RAM 中(角色、菜单、地图等)。战斗时并不需要全部数据,所以使用最频繁的部分被缓存进 CPU。”
缓存层级及其特性
| 层级 | 大小(典型值) | 速度 / 延迟 | 位置 | 是否共享 |
|---|---|---|---|---|
| L1 | 每核 10‑12 KB | 最快(≈ 1 周期) | 最靠近核心 | 否 |
| L2 | 每核 100 KB – 1 MB | 稍慢 | 稍远一点 | 否 |
| L3 | 总计 10‑15 MB | 三者中最慢 | 所有核心共享 | 是 |
┌──────────────┐ → Fastest ⚡ (Smallest) ← Closest to core
│ L1 Cache │
└──────────────┘
↓
┌──────────────┐ → A bit slower 🐇 (Larger) ← Still per core
│ L2 Cache │
└──────────────┘
↓
┌──────────────┐ → Shared among cores 🐢 (Biggest) ← A bit away
│ L3 Cache │
└──────────────┘
各层存放什么?
| 缓存 | 典型内容 |
|---|---|
| L1 | 超必要数据:当前指令、寄存器值、立即数操作数、分支预测信息。 |
| L2 | 未能放入 L1 的常访问数据:最近的循环体、小型数据结构、已解码指令。 |
| L3 | 跨核心共享的大工作集:共享库、纹理数据、大数组。 |
小结 – 完整的游戏类比流程
- 游戏打开 – 文件从 硬盘 / ROM 读取 → 加载到 RAM。
- 比赛开始 – 数据根据紧迫程度在内存层级中分配。
┌─────────────────────────────────────────────────────────┐
│ HARDWARE MEMORY HIERARCHY │
└───────────────────────────────────────────────────┘
寄存器(Your Hand)– 超即时
┌──────────────────────────────────────────────────────────┐
│ REGISTER (In your HAND) │
│ Ultra‑Immediate Data (being processed RIGHT NOW) │
│──────────────────────────────────────────────────────────│
│ • Player’s current position │
│ • Opponent’s position │
│ • Bullet speed │
│ • Distance to target │
│ • Real‑time damage calculations │
│ • Current instruction being executed │
│ │
│ Size: Tiny (bytes) Speed: Instant │
│ (the book you’re reading at THIS moment) │
└──────────────────────────────────────────────────────────┘
L1、L2、L3 – 桌子、抽屉和壁橱
| 级别 | 它包含的内容(游戏风格) |
|---|---|
| L1 | “我现在手里拿的是什么书?” – 当前指令及其操作数。 |
| L2 | “桌子上有什么书?” – 最近的几条指令,小型数据结构。 |
| L3 | “书架上有什么书?” – 多个核心可能需要的较大资产(地图、纹理)。 |
RAM – 书房
所有其他游戏资产(菜单、大厅 UI、语音聊天缓冲区等)都存放在 RAM 中,随时准备在需要时被拉入缓存。
存储(ROM/HDD/SSD)– 图书馆
完整的游戏文件存放在这里,直到操作系统加载它们。
最终要点
| 组件 | 角色 | 类比 |
|---|---|---|
| 寄存器 | 保存此刻所需的数据。 | 手中的书。 |
| L1 缓存 | 为单核存储最常访问的字节。 | 放在你面前桌子上的书。 |
| L2 缓存 | 为同一核心保存次重要的数据。 | 桌子抽屉里的书。 |
| L3 缓存 | 所有核心共享的池子;容量更大但更慢。 | 附近书架上的书。 |
| RAM | 整个程序的主要工作内存。 | 你即将需要的一堆书的学习室。 |
| ROM / HDD / SSD | 程序和资源的永久存储。 | 存放全世界所有书籍的图书馆。 |
🎮 简而言之
当你在游戏中开火时,CPU会从寄存器中提取超即时数据,从L1中提取极频繁数据,从L2中提取仍然频繁的数据,以及从L3中提取共享数据。其他数据则保留在RAM中,直到它们足够热以被缓存。这个层次结构使处理器保持闪电般的速度,而无需不断回到较慢的内存层。