文章目录
- 计算机中的核心硬件详解
- 一、计算机的基本构成
- 1.1 冯·诺依曼结构
- 1.2 现代计算机的物理组成
- 二、CPU
- 三、总线
- 四、存储器
- 1. 存储介质和存储器
- 2. 缓存
- 五、I/O 设备
- 5.1 I/O 交互方式
计算机中的核心硬件详解
一、计算机的基本构成
1.1 冯·诺依曼结构
任何一台现代计算机,无论笔记本还是服务器,都遵循冯·诺依曼结构(Von Neumann Architecture)。该结构定义了计算机的五大核心部件:
| 部件 | 职责 |
|---|---|
| 运算器 ALU(Arithmetic Logic Unit) | 做加减乘除、位运算、比较 |
| 控制器 CU(Control Unit) | 取指令、解码、发出控制信号协调各部件 |
| 存储器(Memory) | 存储程序指令和数据 |
| 输入设备(Input) | 向计算机输入数据 |
| 输出设备(Output) | 输出计算机处理结果 |
1.2 现代计算机的物理组成
冯·诺依曼是逻辑架构,落实到现代计算机物理硬件上,对应为:
- 运算器 ALU:CPU 核心中的 算术逻辑单元(ALU)、浮点数运算单元(FPU)等
- 控制器 CU:CPU 核心中的 控制单元(CU)等
- 存储器:内部存储(寄存器、多级缓存、内存)、外部存储(硬盘、U 盘等)
- 输入设备:键盘/鼠标等
- 输出设备:显示器/打印机等
二、CPU
下面是一个双核的 CPU 结构:
算术逻辑单元
算术逻辑单元 ALU(Arithmetic Logic Unit),每个核心中单独一个。
CPU 里的「整数运算车间」,专门处理整数的加减乘除、逻辑运算(与、或、非、异或)、比较判断(大于、小于、等于)。
浮点数算术单元
浮点数算术单元 FPU(Floating Point Unit),每个核心中单独一个。
CPU 里的「小数 / 高精度运算车间」,专门处理浮点数。
控制单元
控制单元 CU(Control Unit),每个核心中单独一个。
CPU 的「指挥中心」,负责取指令、解码、生成控制信号等,指挥其他部件干活。
核心中断控制器
核心中断控制器 Local APIC(Advanced Programmable Interrupt Controller),每个核心中单独一个。
每个核心的「中断管家」,负责处理外部设备发来的中断(比如硬盘读完数据了、键盘按下了)、定时中断(可以和操作系统搭配实现 CPU 时间片切换)。
寄存器组(Registers)
寄存器组(Registers),每个核心中单独一个。
CPU 里速度最快的存储单元,是 ALU/FPU 的 “工作台”。运算时,数据必须先加载到寄存器里,ALU/FPU 才能直接操作。分为通用寄存器(存数据 / 地址)、专用寄存器(存程序计数器、状态标志等)。平时常说的机器字长(32位机器,64位机器),就取决于通用寄存器能处理的数据位数。
L1/L2/L3
一级缓存(Level 1 Cache)/ 二级缓存(Level 2 Cache),每个核心中单独一个。
三级缓存(Level 3 Cache),所有核心共享一个。
填补 CPU 和内存的速度差距,等级编号越小的缓存,其物理位置离 ALU/FPU/CU 更近,读取速度越快,编号越大的缓存,容量越大。
集成内存控制器
集成内存控制器 IMC(Integrated Memory Controller),所有核心共享一个。
CPU 和内存条之间的「桥梁」,负责内存的读写控制。
PCIe 控制器
高速外设组件互连控制器 PCIe(Peripheral Component Interconnect Express),所有核心共享一个。
CPU 与 高速外设之间的通信桥梁。主板上会有各种类型的 PCIe 插槽,当显卡、NVMe 固态硬盘等高速外设插入 PCIe 插槽后,就可以通过 PCIe 控制器 与 CPU 通信。
DMI 控制器
直接媒体接口 DMI(Direct Media Interface),所有核心共享一个。
CPU 与 慢速外设之间的通信桥梁。主板会搭载 PCH(平台控制器集线器,Platform Controller Hub) 芯片,前身是南桥,该芯片集成了多种功能控制器,外设数据均经由 PCH 转发。PCH 控制器分为两类:
- 对外接口型:USB 控制器、SATA 控制器等,通过 PCB 走线连接到主板上对应的物理端口
- 内部辅助型:DMA 控制器、I/O APIC 等,无外部端口,仅 PCH 内部使用
无论是对外接口型还是内部辅助型控制器,数据最终都通过 DMI 接口与 CPU 完成交互。
三、总线
现代计算机中各个部件之间通信的线路就叫总线(BUS),用来数据传递等。
总线可分为:
- 片内总线:用于 CPU 内部各个部件间的互连(如:ALU、寄存器、各级缓存等)。
- 内存总线:用于 CPU 中的 集成内存控制器 与 内存 的互连。
- PCIe 总线:用于 CPU 中的 PCIe 控制器 与 主板上各个 PCIe 插槽间的互连。
- DMI 总线:用于 CPU 中的 DMI 控制器 与 主板上的 PCH 芯片的互连。
早期计算机存在系统总线的概念,是连接 CPU、内存、I/O 设备的主干总线,核心为前端总线 (FSB Front-Side Bus)。早期的数据通路为:CPU → 前端总线 → 北桥芯片 → 再分别连接内存、显卡。
现代 CPU 已将 内存控制器、PCIe 控制器等集成至 CPU 内部,传统一体式系统总线被拆解为 内存总线、PCIe 总线、DMI 总线等多条专用总线。前端总线、北桥架构现已淘汰。
四、存储器
1. 存储介质和存储器
MOS 晶体管
MOS 晶体管,是数字电路的基础开关器件,属于半导体电控开关,它不是存储介质也不是存储器,但它是组成存储器的重要部分。晶体管可以控制是否给存储介质通电。存储器就是通过电的状态来判断所谓的 0 和 1。
静态随机存储器
静态随机存储器 SRAM(Static Random Access Memory),由 6 颗 MOS 晶体管 为一组构成一个存储单元来存放 1 位二进制数据。不需要储存电荷,通过持续供电来保存信息,高电平是代表二进制 1,低电平时代表二进制 0。
寄存器、L1、L2、L3 缓存 都属于静态随机存储器,因为 6 个晶体管才能构成 1 个二进制位,所以不适合太大容量,造价太高。
动态随机存储器
动态随机存储器 DRAM(Dynamic Random Access Memory),1 位二进制数据,由 1 个 MOS 晶体管 搭配 1 个微型电容组成,依靠电容内部储存电荷区分数据。
电容存有电荷代表1、放空电荷代表0。电容天然存在漏电现象,存放的电荷会随时间慢慢损耗流失,为了避免数据丢失,需要经常进行充电刷新。
内存属于动态随机存储器,因为电容会漏电所以需要持续供电来刷新电荷,从而保证数据不流失,所以不能作为永久存储。
NAND 闪存颗粒
NAND Flash,固态硬盘的核心存储原料。
电荷被密封禁锢在晶体管中间的绝缘栅夹层里,外层绝缘材料隔绝电荷外泄,断电后电荷依旧保存在夹层内部,数据不会丢失。受自身物理硬件规则约束,新数据写入时,需要先将一大块原电荷擦除(不是简单的释放电荷),然后再写入,擦除动作存在物理损耗,所以闪存颗粒拥有固定擦写寿命,达到上限后存储单元损坏报废。
固态硬盘属于 NAND 闪存颗粒实现,适合当作永久存储,但因为其读写特点,所以性能远低于内存。
磁介质
不靠晶体管、不靠电荷,依靠盘片表面磁性涂层保存数据,通过改变磁粒的磁极方向记录 0 和 1,一种磁极代表 0,反向磁极代表 1,断电后磁性不会消失,数据永久保留。
机械硬盘就属于磁介质实现。依靠马达旋转盘片、机械臂上的磁头前后移动寻道读写,机械运动速度远慢于电子信号,全存储体系最慢。
2. 缓存
计算机硬件中的缓存就是用来弥补处理速度的。
比如,CPU 处理太快,而内存读写太慢,这就会导致 CPU 大部分时间都在 “等内存”,这就是所谓的内存墙。
为了弥补处理速度的差距,就需要用一个读写更快的存储介质来和 CPU 交互,这个存储介质就称为缓存(L1、L2、L3)。 但前文说过,L1、L2、L3 属于 SRAM,需要 6 个晶体管来构成 1 个二进制位,所以不适合做成大容量,一方面是因为晶体管太多造价太高,另一方面物理摆放上也占地方。
缓存会通过局部性原理(Locality Principle)从内存中读入数据:
- 时间局部性(Temporal Locality):刚访问过的地址,很可能马上再访问(如循环变量)
- 空间局部性(Spatial Locality):刚访问过的地址附近的地址,也很快会被访问(如数组遍历)
五、I/O 设备
能向 CPU 发送数据(输入)或接收 CPU 数据(输出)的设备,统称为 I/O 输入输出设备,如:鼠标、键盘、网卡、显示器、打印机等。
5.1 I/O 交互方式
I/O 设备和 CPU 交互时,有三种方式,程序查询方式、纯中断驱动方式、DMA 方式(现代 I/O 设备几乎都是这种方式)。
程序查询方式
程序查询方式(Polling), CPU 用轮询的方式,不停访问 I/O 设备,等待数据就绪期间,CPU 被完全占用,无法做其他事情。当 I/O 设备把数据全部准备好后,才会读取并把数据写入内存。
中断驱动方式
中断驱动方式(Interrupt-driven I/O),用事件驱动的方式交互。
CPU 发送命令给 I/O 设备,然后 CPU 就可以去做其他事情,当 I/O 设备准备就绪后,高速设备通过 PCIe 控制器向 CPU 中的 Local APIC(核心中断控制器)发送中断信号。低速设备通过 PCH 中的 I/O 中断控制器,向 CPU 中的 Local APIC(核心中断控制器)发送中断信号。
当 CPU 中的 Local APIC 收到中断信号后,CPU 会暂停当前任务,并保存上下文,然后读取 I/O 设备已准备好的数据,并写入内存。
虽然在 I/O 设备准备数据期间,CPU 可以去做其他事,但数据从 I/O 设备 到 内存 的搬运仍然由 CPU 完成。如果传输大量数据,会不断的触发中断,然后 CPU 会不断的切换上下文,将 I/O 设备中的数据读取并写入到内存,在大数据量下效率极低。
DMA 方式
DMA(Direct Memory Access,直接存储器访问),可以分担 CPU 对 I/O 数据的搬运工作。DMA 有两种存在形式:
- 低速设备时:通过 PCH 中的 DMA 控制器实现
- 高速设备时:PCIe 自身就有 DMA 功能
CPU 将源地址、目标地址、传输长度告诉 DMA 控制器,然后去做其他事。之后由 DMA 来等待 I/O 数据的就绪。当 I/O 设备就绪后,DMA 会将数据读取,并写入内存,写入完成后会通过中断控制器向 CPU 的 Local APIC 发送中断信号,告诉 CPU “数据已经在内存”,可以直接使用。