《计算机是怎样跑起来的》学习笔记(二):CPU、内存、I/O 和总线到底是什么?
一、前言:上一部分讲了什么?
在第一部分中,我们先理解了计算机的三大原则:
输入 → 运算 → 输出
以及:
软件 = 指令 + 数据
还有一个非常重要的观点:
计算机内部的一切信息,最终都要转换成数字。
也就是说,计算机做任何事情,本质上都是接收输入、处理数字化的数据,然后输出结果。
但是,这里还有一个问题:
计算机到底靠什么来完成这些工作?
答案就是计算机硬件。
这一部分主要整理《计算机是怎样跑起来的》中关于硬件组成的内容,重点理解:
CPU、内存、I/O、总线、时钟信号
这些概念是理解计算机工作原理的基础。
二、计算机硬件的基本组成
从最基础的角度看,一台计算机至少需要几个核心部分:
CPU
内存
I/O 设备
总线
时钟信号
它们之间的关系可以简单理解为:
CPU 负责处理
内存负责临时存放程序和数据
I/O 负责和外部交换信息
总线负责在各部分之间传递信息
时钟负责让整个系统按节奏工作
可以用一个通俗例子来理解。
假设计算机是一家餐厅:
| 计算机部件 | 餐厅类比 | 作用 |
|---|---|---|
| CPU | 厨师 | 按照菜谱处理食材 |
| 内存 | 操作台 | 临时摆放正在使用的食材和工具 |
| 硬盘 | 仓库 | 长期保存食材和资料 |
| I/O 设备 | 点餐口、出餐口 | 接收顾客点单,输出做好的菜 |
| 总线 | 餐厅内部通道 | 传递食材、订单和结果 |
| 时钟信号 | 节拍器 | 让所有动作按节奏进行 |
计算机运行程序的过程,就像餐厅根据订单做菜:
顾客点餐
↓
点餐信息进入餐厅
↓
厨师查看菜谱
↓
从操作台拿食材
↓
加工处理
↓
做好的菜送出去
对应到计算机中就是:
输入数据
↓
数据进入内存
↓
CPU 读取指令和数据
↓
CPU 执行运算
↓
结果写回内存或输出到设备
三、CPU:计算机的大脑
1. CPU 是什么?
CPU,全称是 Central Processing Unit,中文叫中央处理器。
它是计算机中最核心的部件之一,主要负责执行程序中的指令。
通俗理解:
CPU 就是计算机里的"执行者"。
程序让计算机做什么,最终都需要 CPU 去执行。
比如:
计算两个数相加
判断密码是否正确
读取某个内存地址的数据
把结果写到某个位置
控制某个设备工作
这些操作最终都离不开 CPU。
2. CPU 并不是"什么都懂"
很多人会把 CPU 理解成"计算机的大脑",这个说法可以帮助入门,但要注意:
CPU 并不是真的会思考。
CPU 做的事情非常机械:
取出一条指令
理解这条指令代表什么操作
执行这条指令
继续取下一条指令
它不会自己决定要做什么,只会按照程序给出的指令一步步执行。
可以把 CPU 想象成一个严格按照菜谱做菜的厨师:
菜谱写:切菜
他就切菜
菜谱写:放油
他就放油
菜谱写:翻炒 3 分钟
他就翻炒 3 分钟
如果菜谱写错了,厨师也会照着错的步骤做。
程序也是这样。
如果程序逻辑写错,CPU 仍然会严格执行错误的指令。这也是为什么程序会出现 bug。
3. CPU 的基本工作过程
CPU 执行程序时,大致会重复下面几个步骤:
取指令
↓
解释指令
↓
执行指令
↓
保存结果
↓
继续执行下一条指令
可以进一步理解为:
第一步:取指令
CPU 从内存中取出下一条要执行的指令。
程序运行时,指令通常存放在内存中。CPU 会按照地址去内存里取指令。
第二步:解释指令
CPU 判断这条指令是什么意思。
比如这条指令可能表示:
把两个数相加
从内存读取数据
把数据写入内存
跳转到另一个地址
第三步:执行指令
CPU 根据指令完成对应操作。
例如执行加法、比较、跳转、读取数据等。
第四步:保存结果
如果运算产生了结果,CPU 会把结果保存到寄存器或内存中。
第五步:继续下一条指令
执行完一条指令后,CPU 会继续执行下一条指令。
整个程序就是这样一条一条执行下去的。
四、内存:程序运行时的临时工作区
1. 内存是什么?
内存,也叫主存,英文常称为 Memory 或 RAM。
它的作用是:
临时存放正在运行的程序和正在处理的数据。
电脑关机后,内存里的内容通常会消失,所以内存是临时性的。
通俗理解:
硬盘像仓库,内存像工作台。
仓库可以长期保存东西,但取东西比较慢。
工作台空间有限,但拿取方便,适合处理当前正在做的事情。
2. 为什么程序运行前要加载到内存?
很多初学者会有一个疑问:
程序不是已经保存在硬盘里了吗?为什么运行时还要放到内存里?
这是因为 CPU 不能直接高效地从硬盘中一条条读取指令执行。
硬盘适合长期保存文件,但速度相对较慢。
内存速度更快,更适合 CPU 随时读取程序指令和数据。
程序运行的大致过程是:
程序原本保存在硬盘中
↓
用户双击程序
↓
操作系统把程序加载到内存
↓
CPU 从内存读取指令
↓
程序开始运行
比如打开一个浏览器:
浏览器程序文件保存在硬盘
↓
双击浏览器图标
↓
操作系统把浏览器相关内容加载到内存
↓
CPU 开始执行浏览器程序
↓
浏览器窗口显示出来
所以,程序只有保存在硬盘里是不够的。
要真正运行起来,必须被加载到内存中。
3. 内存为什么需要地址?
内存可以想象成一排很多很多的小格子,每个格子都能存放数据。
为了找到某个具体位置,每个内存单元都需要一个编号,这个编号就是内存地址。
可以类比酒店房间:
房间 101
房间 102
房间 103
服务员要找某个客人,不能只说"去那个房间",必须知道房间号。
内存也是一样。
CPU 要读取某个数据时,必须知道它在内存中的地址。
CPU 发出地址
↓
内存根据地址找到对应位置
↓
把数据传给 CPU
4. 变量和内存地址的关系
在编程语言中,我们经常写变量:
age = 18
从人的角度看,age 是一个变量名。
但从计算机角度看,这个变量背后对应的是内存中的某个位置。
可以理解为:
变量名:方便人理解
内存地址:方便计算机查找
变量值:真正保存的数据
比如:
| 人看到的内容 | 计算机内部理解 |
|---|---|
| age | 某个内存地址 |
| 18 | 存放在该地址中的数据 |
变量名是给程序员看的,内存地址是给计算机使用的。
五、硬盘和内存有什么区别?
很多初学者容易把硬盘和内存混淆。
它们都能"存东西",但作用完全不同。
| 对比项 | 内存 | 硬盘 |
|---|---|---|
| 作用 | 临时存放正在运行的程序和数据 | 长期保存文件、软件、系统 |
| 速度 | 快 | 相对慢 |
| 容量 | 通常较小 | 通常较大 |
| 断电后数据 | 通常消失 | 仍然保存 |
| 类比 | 工作台 | 仓库 |
举个例子:
写一篇文章时:
文章文件保存在硬盘中
↓
打开文档后,内容被加载到内存
↓
编辑过程中,CPU 处理内存中的内容
↓
点击保存后,修改结果写回硬盘
所以:
硬盘负责长期保存
内存负责运行时临时使用
CPU 负责执行和处理
这三者配合起来,程序才能正常运行。
六、I/O:计算机和外部世界的通道
1. I/O 是什么?
I/O 是 Input/Output 的缩写,中文叫输入/输出。
它指的是计算机和外部世界交换信息的过程。
输入设备负责把外部信息送入计算机;
输出设备负责把计算机处理结果展示或传递出去。
2. 常见输入设备
| 输入设备 | 作用 |
|---|---|
| 键盘 | 输入文字、数字、命令 |
| 鼠标 | 输入点击、移动、拖拽 |
| 摄像头 | 输入图像 |
| 麦克风 | 输入声音 |
| 扫描仪 | 输入纸质文档图像 |
| 传感器 | 输入温度、湿度、压力等信息 |
| 网卡 | 接收网络数据 |
3. 常见输出设备
| 输出设备 | 作用 |
|---|---|
| 显示器 | 显示文字、图像、视频 |
| 打印机 | 输出纸质文档 |
| 扬声器 | 输出声音 |
| 网卡 | 发送网络数据 |
| 指示灯 | 显示设备状态 |
| 电机 | 根据控制信号运动 |
需要注意的是,有些设备既可以输入,也可以输出。
比如网卡:
接收网络数据 → 输入
发送网络数据 → 输出
硬盘也可以看作 I/O 设备:
读取文件 → 输入
写入文件 → 输出
4. 为什么 CPU 不能直接和所有设备随便通信?
计算机连接的设备很多:
键盘
鼠标
显示器
硬盘
打印机
网卡
摄像头
音箱
每个设备的工作方式都不一样。
CPU 如果要直接理解所有设备的细节,会非常复杂。
所以计算机系统通常会通过 I/O 控制器、接口、驱动程序等方式来管理设备。
可以通俗理解为:
CPU 不直接和所有设备"说方言"
而是通过统一的接口和设备沟通
比如电脑要打印文件:
应用程序发出打印请求
↓
操作系统处理请求
↓
打印机驱动把请求转换成打印机能理解的格式
↓
打印机开始工作
这就是为什么安装打印机时经常需要驱动程序。
驱动程序就像翻译:
操作系统的话
↓
驱动程序翻译
↓
设备能听懂的指令
七、总线:计算机内部的信息道路
1. 总线是什么?
计算机内部的各个部件需要互相传递信息。
CPU 要从内存读取数据;
CPU 要把结果写回内存;
CPU 要控制 I/O 设备;
I/O 设备也要把数据送入计算机。
这些信息不能凭空传递,必须通过某种通道。
这个通道就可以理解为总线。
通俗地说:
总线就是计算机内部传递数据和控制信息的道路。
2. 为什么叫"总线"?
"总线"这个名字可以理解成一条公共线路。
多个部件都连接在这条线路上,通过它进行通信。
就像城市中的道路系统:
人、车、货物都通过道路移动
不同地点靠道路连接起来
计算机内部也是一样:
CPU、内存、I/O 设备通过总线连接起来
数据、地址、控制信号通过总线传递
3. 三类重要总线
一般可以把总线分成三类:
地址总线
数据总线
控制总线
这三个概念很重要。
4. 地址总线:告诉计算机"去哪儿"
地址总线的作用是传递地址信息。
CPU 要访问内存或 I/O 设备时,必须先告诉系统:
我要访问哪个位置?
这个"位置"就是地址。
可以用取快递来类比:
地址总线 = 快递地址
快递员送包裹时,必须知道送到哪个地址。
CPU 访问内存时,也必须知道访问哪个内存地址。
例如:
CPU 想读取内存中某个数据
↓
CPU 通过地址总线发出地址
↓
内存根据地址找到对应位置
5. 数据总线:真正传输数据
数据总线负责传输真正的数据。
继续用快递类比:
地址总线告诉快递送到哪里
数据总线负责运输包裹本身
CPU 读取内存时:
CPU 发出地址
↓
内存找到数据
↓
数据通过数据总线传回 CPU
CPU 写入内存时:
CPU 发出地址
↓
CPU 把数据通过数据总线送出去
↓
内存把数据保存到对应地址
6. 控制总线:告诉系统"要做什么"
控制总线负责传递控制信号。
它告诉系统当前操作是:
读取
写入
中断
复位
确认
继续用快递类比:
地址总线:送到哪里
数据总线:送什么东西
控制总线:是送货、取货,还是退货
没有控制总线,系统就不知道当前到底是读数据还是写数据。
八、CPU 读取内存数据的完整过程
现在把 CPU、内存、总线放到一起,看一个完整例子。
假设 CPU 想从内存中读取一个数据。
过程大致如下:
第一步:CPU 通过地址总线发出内存地址
第二步:CPU 通过控制总线发出"读取"信号
第三步:内存根据地址找到对应数据
第四步:内存通过数据总线把数据传给 CPU
第五步:CPU 接收数据并进行处理
可以用表格整理:
| 步骤 | 做什么 | 使用的总线 |
|---|---|---|
| 1 | CPU 指定要访问的内存位置 | 地址总线 |
| 2 | CPU 告诉内存要读取数据 | 控制总线 |
| 3 | 内存找到对应数据 | 内存内部操作 |
| 4 | 数据传回 CPU | 数据总线 |
| 5 | CPU 处理数据 | CPU 内部操作 |
这就是一次最基础的读取过程。
看起来很简单,但计算机每秒会重复进行大量类似操作。
九、CPU 写入内存数据的完整过程
再看 CPU 把数据写入内存的过程。
第一步:CPU 通过地址总线发出目标内存地址
第二步:CPU 通过数据总线发送要写入的数据
第三步:CPU 通过控制总线发出"写入"信号
第四步:内存把数据保存到指定地址
可以理解为:
CPU:我要把这个数据写到某个位置
内存:收到,我把它保存起来
完整过程如下:
| 步骤 | 做什么 | 使用的总线 |
|---|---|---|
| 1 | 指定写入位置 | 地址总线 |
| 2 | 发送要写入的数据 | 数据总线 |
| 3 | 发出写入命令 | 控制总线 |
| 4 | 内存保存数据 | 内存内部操作 |
十、时钟信号:让计算机按节奏工作
1. 为什么需要时钟?
计算机内部有很多部件:
CPU
内存
I/O 控制器
各种芯片
这些部件需要协调工作。
如果没有统一节奏,就会混乱。
时钟信号的作用就是:
让计算机各个部分按照统一节拍执行操作。
可以把时钟想象成乐队指挥。
乐队里有很多乐器:
小提琴
钢琴
鼓
长笛
每个乐器都能发声,但必须跟着指挥的节拍,音乐才不会乱。
计算机也是一样。
各个硬件部件必须按照时钟节拍协调工作。
2. 时钟信号像节拍器
时钟信号可以理解成不断变化的电信号:
高电平
低电平
高电平
低电平
它像节拍器一样不断发出节奏:
滴答
滴答
滴答
滴答
CPU 会根据这些节拍执行操作。
3. CPU 主频是什么?
我们常说 CPU 是 2.4GHz、3.0GHz、4.0GHz。
这里的 GHz 就和时钟频率有关。
1Hz 表示每秒 1 次周期。
1GHz 表示每秒大约 10 亿次周期。
所以 3GHz 可以简单理解为:
每秒大约有 30 亿个时钟周期
但是要注意:
CPU 主频高,不一定代表电脑整体性能一定强。
因为性能还受到很多因素影响:
CPU 架构
核心数量
缓存大小
内存速度
硬盘速度
程序优化
散热情况
就像一个厨师动作很快,但厨房太小、食材送得慢、工具不好用,整体出餐速度也不一定快。
十一、计算机是怎样执行一条简单指令的?
现在假设计算机要执行一个非常简单的任务:
计算 1 + 2
从人的角度看,这很简单。
但从计算机内部看,可能要经历很多步骤:
把数字 1 放入某个位置
把数字 2 放入某个位置
CPU 读取数字 1
CPU 读取数字 2
CPU 执行加法指令
把结果 3 保存起来
把结果输出
进一步拆开:
第一步:数据进入内存
1 和 2 作为数据被保存到内存中
第二步:指令进入内存
程序中的加法指令也保存在内存中。
加法指令也有自己的存放地址
第三步:CPU 读取指令
CPU 根据指令地址,从内存中取出加法指令。
第四步:CPU 读取数据
CPU 再从内存中取出数字 1 和数字 2。
第五步:CPU 执行加法
CPU 内部完成加法运算。
第六步:结果写回内存
计算结果 3 被保存到内存或寄存器中。
第七步:输出结果
程序把结果显示到屏幕上,或者保存到文件中。
十二、程序运行时,硬件之间如何配合?
一个程序运行时,硬件之间大致是这样配合的:
硬盘保存程序文件
↓
程序运行时被加载到内存
↓
CPU 从内存读取指令
↓
CPU 根据指令处理数据
↓
需要输入输出时,通过 I/O 设备完成
↓
处理结果可能显示到屏幕,也可能保存回硬盘
比如打开一个文本编辑器写文章:
文本编辑器程序保存在硬盘
↓
用户双击图标
↓
操作系统把程序加载到内存
↓
CPU 执行程序指令
↓
用户通过键盘输入文字
↓
键盘作为输入设备把信息送入计算机
↓
CPU 和程序处理输入
↓
显示器输出文字
↓
点击保存后,数据写回硬盘
这个例子里面,几乎所有硬件都参与了:
| 硬件 | 作用 |
|---|---|
| 硬盘 | 保存程序和文件 |
| 内存 | 临时存放正在运行的程序和文本内容 |
| CPU | 执行文本编辑器程序 |
| 键盘 | 输入文字 |
| 显示器 | 显示文字 |
| 总线 | 在硬件之间传递信息 |
| 时钟 | 协调各部分工作节奏 |
十三、为什么计算机需要"架构"?
计算机不是简单把 CPU、内存、硬盘拼在一起就能工作。
它们之间必须有清晰的连接方式和协作规则。
这种整体设计方式,就可以理解为计算机架构。
最基本的计算机结构可以概括为:
CPU
↓ ↑
内存
↓ ↑
I/O 设备
它们通过总线连接,并在时钟信号协调下工作。
可以理解为:
CPU 是执行中心
内存是运行中心
I/O 是外部通道
总线是连接道路
时钟是工作节奏
这几个部分共同组成了计算机的基本运行环境。
十四、初学者容易混淆的几个问题
1. CPU 和内存谁更重要?
二者作用不同,不能简单比较。
CPU 负责执行指令;
内存负责存放正在运行的指令和数据。
没有 CPU,程序没人执行。
没有内存,CPU 找不到正在运行的程序和数据。
可以理解为:
CPU 是干活的人
内存是工作台
只有人没有工作台,活不好干。
只有工作台没有人,也不会自动完成任务。
2. 内存越大,电脑一定越快吗?
不一定。
内存越大,意味着电脑可以同时容纳更多正在运行的程序和数据。
比如同时打开:
浏览器
视频软件
文档
聊天软件
开发工具
内存大时更不容易卡顿。
但如果只是运行很小的程序,增加内存不一定明显提升速度。
电脑速度还和 CPU、硬盘、系统、软件优化等有关。
3. 硬盘容量大和内存大是一回事吗?
不是。
硬盘容量大,说明能长期保存更多文件。
内存大,说明能同时运行更多程序或处理更大的临时数据。
比如:
硬盘 1TB:能保存很多视频、软件、文件
内存 16GB:能更流畅地同时运行多个程序
它们不是同一个概念。
4. 为什么电脑会"卡"?
电脑卡顿可能有很多原因:
CPU 忙不过来
内存不够
硬盘读写太慢
程序占用资源太多
系统后台任务太多
散热不好导致降频
比如同时打开很多软件,内存不够时,系统可能频繁把数据在内存和硬盘之间搬来搬去。硬盘速度比内存慢很多,所以电脑就会变卡。
5. 程序在硬盘里,为什么关机后还能存在?
因为硬盘是长期存储设备,断电后数据仍然保存。
内存是临时存储设备,断电后数据通常消失。
所以:
安装的软件、保存的照片、文档 → 在硬盘里
正在运行的程序、临时处理的数据 → 在内存里
十五、本部分核心知识总结
这一部分主要理解计算机硬件的基本组成。
可以总结为下面几句话。
1. CPU 负责执行指令
CPU 是计算机的执行核心,负责读取、解释和执行程序指令。
它并不真正思考,只是按照程序一步步执行。
2. 内存负责临时存放程序和数据
程序运行前需要从硬盘加载到内存,CPU 再从内存中读取指令和数据。
内存速度快,但断电后数据通常消失。
3. I/O 负责连接外部世界
键盘、鼠标、显示器、硬盘、网卡、打印机等都属于输入输出相关设备。
计算机通过 I/O 接收输入,也通过 I/O 输出结果。
4. 总线负责传递信息
地址总线传地址
数据总线传数据
控制总线传控制信号
总线就像计算机内部的道路系统。
5. 时钟信号负责协调节奏
计算机内部的各个部件按照时钟信号的节拍工作。
CPU 主频和时钟频率有关,但整体性能不只由主频决定。
十六、用一句话理解本部分
本部分可以用一句话总结:
计算机之所以能运行程序,是因为 CPU、内存、I/O 设备通过总线连接起来,并在时钟信号的协调下,按照程序指令一步步处理数据。
再简化一点:
CPU 负责算
内存负责放
I/O 负责进出
总线负责传
时钟负责节奏