Menu Close

CPU是如何工作的?从晶体管到现代处理器

第一章 什么是CPU?

CPU是如何工作的?

你有没有想过:

当你点击一个图标的时候,电脑里面到底发生了什么?

打开浏览器的时候发生了什么?

运行一个游戏的时候发生了什么?

看起来电脑似乎很聪明。

能够计算。

能够播放视频。

能够运行人工智能

能够联网。

但实际上,电脑并不聪明。

它只是按照指令一步一步执行。

负责执行这些指令的核心部件,就是CPU

CPU,全称 Central Processing Unit,中文叫中央处理器

它经常被称为计算机的大脑。

你电脑里运行的每一个程序,最终都离不开CPU

浏览网页需要CPU

播放视频需要CPU

打开文件需要CPU

甚至你移动一下鼠标,背后都有CPU参与。

那么问题来了:

一块小小的硅片,是如何完成这一切的?

为什么它每秒钟能够执行几十亿次操作?

为了回答这个问题,我们必须从最底层开始讲起。


第二章 一切始于晶体管

晶体管

CPU最底层的组成单位叫做晶体管

晶体管本质上就是一个电子开关。

它只有两种状态:

开。

或者关。

可以把它想象成家里的电灯开关。

开关打开。

电流通过。

开关关闭。

电流停止。

就这么简单。

单独一个晶体管其实没什么特别。

它只能表示两个状态。

1

或者0

这也是为什么计算机使用二进制。

因为晶体管天生就适合表示两种状态。

现代CPU里面有多少晶体管呢?

几十亿个。

甚至上百亿个。

这些晶体管被密密麻麻地刻蚀在一块指甲大小的硅片上。

而正是这些微小的开关,构成了整个数字世界。


第三章 逻辑门

逻辑门

单个晶体管只能表示0和1。

那如何进行计算呢?

答案就是逻辑门。

逻辑门是由多个晶体管组成的电子电路。

最常见的逻辑门包括:

AND门

OR门

NOT门

XOR门

逻辑门接收输入。

然后产生输出。

例如AND门。

只有当两个输入都为1时。

输出才为1。

否则输出就是0。

看起来非常简单。

但实际上,整个计算机世界都建立在这些简单规则之上。

加法。

减法。

比较大小。

条件判断。

最终都可以拆解成逻辑门操作。

逻辑门就是数字计算的积木。


第四章 ALU是如何诞生的

ALU

现在我们把大量逻辑门组合起来。

会发生什么?

假设我们要计算:

0011

0101

计算机当然不会拿计算器。

而是通过专门的加法器电路完成。

多个加法器继续组合。

最终形成一个重要部件:

ALU。

Arithmetic Logic Unit。

算术逻辑单元。

ALU负责:

加法

减法

比较

位运算

几乎所有数学计算

当软件执行:

A+B

实际上真正干活的就是ALU。

它是CPU内部的计算工厂。


第五章 寄存器

记忆体和寄存器

CPU不仅要计算。

还要记住数据。

这时候就需要寄存器。

寄存器位于CPU内部。

速度极快。

甚至比内存快几十倍甚至上百倍。

可以把寄存器理解为:

CPU桌面上的工作区。

CPU正在处理的数据都会暂时放在这里。

例如:

A=15

B=27

CPU会先把这两个数字装入寄存器。

然后交给ALU计算。

得到结果42以后。

再把结果放回寄存器。

没有寄存器的话。

CPU每次都要访问内存。

速度会下降很多。


第六章 指令是什么

指令是什么

到目前为止。

我们已经有:

晶体管

逻辑门

ALU

寄存器

CPU仍然不知道要做什么。

谁来告诉CPU工作内容?

答案是指令。

指令其实就是命令。

例如:

加法

移动数据

比较数据

跳转到其他位置

不同CPU有不同的指令集。

例如:

x86

ARM

RISC-V

对于程序员来说。

这些指令长这样:

MOV

ADD

SUB

JMP

但对于CPU来说。

它们最终都是一串0和1。


第七章 取指、译码、执行

取指、译码、执行

终于来到CPU工作的核心。

取指。

译码。

执行。

简称:

Fetch

Decode

Execute

第一步。

取指。

CPU从内存读取下一条指令。

第二步。

译码。

CPU分析这条指令是什么意思。

第三步。

执行。

CPU真正完成这条指令。

然后继续下一条。

不断循环。

一秒钟执行几十亿次。

无论是浏览器。

游戏。

Linux

Windows。

人工智能

最终都建立在这个循环之上。


第八章 程序计数器

程序计数器

那么CPU怎么知道下一条指令在哪里?

答案是程序计数器。

Program Counter。

简称PC。

它保存下一条指令的地址。

例如:

0x1000

执行完以后。

变成:

0x1004

然后:

0x1008

继续向前推进。

如果遇到跳转指令。

PC会直接跳到新的地址。

这使得程序能够:

做判断

执行循环

运行不同代码路径

如果没有Program Counter。

软件根本无法存在。


第九章 流水线

流水线

早期CPU一次只能执行一条指令。

效率很低。

后来工程师借鉴了汽车流水线。

汽车工厂里:

一个工人装轮胎。

一个工人装车门。

一个工人装发动机。

同时工作。

CPU也一样。

第一条指令正在执行。

第二条正在译码。

第三条正在取指。

多个阶段同时进行。

这就是流水线技术。

Pipeline。

它大幅提高了CPU性能。

现代处理器几乎全部依赖流水线。


第十章 高速缓存

高速缓存

CPU速度非常快。

但内存很慢。

如果CPU每次都等待内存返回数据。

性能会崩溃。

于是工程师发明了Cache。

高速缓存。

Cache位于CPU附近。

容量很小。

但速度极快。

经常使用的数据会放在这里。

CPU访问数据时:

先查Cache。

找到了直接使用。

找不到再访问内存。

现代CPU通常有:

L1 Cache

L2 Cache

L3 Cache

距离CPU越近。

速度越快。

Cache是现代CPU高性能的重要原因之一。


第十一章 多核时代

多核时代

过去提高性能的方法很简单。

提高频率。

CPU跑得更快。

后来遇到了问题。

发热太严重。

功耗太高。

于是工程师换了思路。

不再做一个超级核心。

而是做多个核心。

今天的CPU可能有:

4核

8核

16核

32核

甚至更多。

每个核心都可以独立工作。

你浏览网页的时候。

一个核心可能在处理浏览器。

另一个核心在播放音乐。

第三个核心正在下载文件。

多核设计彻底改变了计算机世界。


第十二章 现代CPU为什么如此复杂

现代CPU

到目前为止。

我们讲的其实只是简化版本。

真正的现代CPU远比这复杂。

里面还包括:

乱序执行

分支预测

推测执行

SIMD并行计算

虚拟内存

安全模块

功耗管理

等等。

一颗现代CPU里面。

可能有上百亿个晶体管同时工作。

它是人类历史上最复杂的机器之一。


总结

中央处理器CPU是如何工作的

CPU看起来复杂。

但核心思想其实很简单。

晶体管构成逻辑门。

逻辑门构成电路。

电路构成寄存器和ALU。

指令告诉CPU该做什么。

CPU不断进行:

取指

译码

执行

所有的软件。

所有的网站。

所有的操作系统

甚至今天的人工智能

最终都建立在这个基础之上。

下次当你打开一个程序的时候。

请记住。

在你看不见的地方。

数百亿个晶体管正在不断开关。

搬运数据。

执行计算。

让软件拥有生命。

这就是CPU工作的原理。

 

除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!
Posted in 计算机科学 (编程语言)