
文章目录计算机中的核心硬件详解一、计算机的基本构成1.1 冯·诺依曼结构1.2 现代计算机的物理组成二、CPU三、总线四、存储器1. 存储介质和存储器2. 缓存五、I/O 设备5.1 I/O 交互方式计算机中的核心硬件详解一、计算机的基本构成1.1 冯·诺依曼结构任何一台现代计算机无论笔记本还是服务器都遵循冯·诺依曼结构Von Neumann Architecture。该结构定义了计算机的五大核心部件部件职责运算器 ALUArithmetic Logic Unit做加减乘除、位运算、比较控制器 CUControl Unit取指令、解码、发出控制信号协调各部件存储器Memory存储程序指令和数据输入设备Input向计算机输入数据输出设备Output输出计算机处理结果1.2 现代计算机的物理组成冯·诺依曼是逻辑架构落实到现代计算机物理硬件上对应为运算器 ALUCPU 核心中的 算术逻辑单元ALU、浮点数运算单元FPU等控制器 CUCPU 核心中的 控制单元CU等存储器内部存储寄存器、多级缓存、内存、外部存储硬盘、U 盘等输入设备键盘/鼠标等输出设备显示器/打印机等二、CPU下面是一个双核的 CPU 结构算术逻辑单元算术逻辑单元 ALUArithmetic Logic Unit每个核心中单独一个。CPU 里的「整数运算车间」专门处理整数的加减乘除、逻辑运算与、或、非、异或、比较判断大于、小于、等于。浮点数算术单元浮点数算术单元 FPUFloating Point Unit每个核心中单独一个。CPU 里的「小数 / 高精度运算车间」专门处理浮点数。控制单元控制单元 CUControl Unit每个核心中单独一个。CPU 的「指挥中心」负责取指令、解码、生成控制信号等指挥其他部件干活。核心中断控制器核心中断控制器 Local APICAdvanced 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 更近读取速度越快编号越大的缓存容量越大。集成内存控制器集成内存控制器 IMCIntegrated Memory Controller所有核心共享一个。CPU 和内存条之间的「桥梁」负责内存的读写控制。PCIe 控制器高速外设组件互连控制器 PCIePeripheral Component Interconnect Express所有核心共享一个。CPU 与 高速外设之间的通信桥梁。主板上会有各种类型的 PCIe 插槽当显卡、NVMe 固态硬盘等高速外设插入 PCIe 插槽后就可以通过 PCIe 控制器 与 CPU 通信。DMI 控制器直接媒体接口 DMIDirect 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。静态随机存储器静态随机存储器 SRAMStatic Random Access Memory由 6 颗 MOS 晶体管 为一组构成一个存储单元来存放 1 位二进制数据。不需要储存电荷通过持续供电来保存信息高电平是代表二进制 1低电平时代表二进制 0。寄存器、L1、L2、L3 缓存 都属于静态随机存储器因为 6 个晶体管才能构成 1 个二进制位所以不适合太大容量造价太高。动态随机存储器动态随机存储器 DRAMDynamic Random Access Memory1 位二进制数据由 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 方式DMADirect Memory Access直接存储器访问可以分担 CPU 对 I/O 数据的搬运工作。DMA 有两种存在形式低速设备时通过 PCH 中的 DMA 控制器实现高速设备时PCIe 自身就有 DMA 功能CPU 将源地址、目标地址、传输长度告诉 DMA 控制器然后去做其他事。之后由 DMA 来等待 I/O 数据的就绪。当 I/O 设备就绪后DMA 会将数据读取并写入内存写入完成后会通过中断控制器向 CPU 的 Local APIC 发送中断信号告诉 CPU “数据已经在内存”可以直接使用。