README
# 计算机组成原理系列
由浅入深,从疑惑到论证,全面理解计算机底层原理
# 系列导读
本系列从计算机体系结构的核心原理出发,覆盖CPU、存储、指令、内存、IO等核心子系统,帮助读者建立完整的计算机底层知识体系。
学习路径建议:
入门基础 核心原理 深入应用
┌────────────┐ ┌────────────────┐ ┌──────────────┐
│ 01.组成结构 │────────>│ 03.CPU设计 │─────────>│ 07.指令编程 │
│ 10.二进制 │ │ 04.缓存设计 │ │ 08.程序执行 │
│ 02.存储器 │────────>│ 09.内存原理 │─────────>│ 11.异常处理 │
└────────────┘ │ 05.输入输出 │ │ 12.IO操作 │
│ 06.总线系统 │ └──────────────┘
└────────────────┘
# 文档目录
| 编号 | 文档 | 核心内容 | 难度 |
|---|---|---|---|
| 01 | 计算机组成结构原理 (opens new window) | 冯·诺依曼架构、五大组件、性能指标、Amdahl定律 | ⭐⭐ |
| 02 | 计算器存储器的原理 (opens new window) | 存储层次、SRAM/DRAM、局部性原理、DDR演进 | ⭐⭐ |
| 03 | 计算机基础CPU设计 (opens new window) | CPU微架构、指令集(CISC/RISC)、缓存一致性、MESI协议、伪共享 | ⭐⭐⭐ |
| 04 | 系统CPU缓存设计思想 (opens new window) | L1/L2/L3设计、缓存行、地址映射、替换策略、编程实践 | ⭐⭐⭐ |
| 05 | 计算机输入输出设备 (opens new window) | I/O控制方式、中断系统、DMA、零拷贝技术 | ⭐⭐⭐ |
| 06 | 计算机总线系统设计 (opens new window) | 总线分类、ISA→PCI→PCIe演进、总线仲裁、NUMA | ⭐⭐ |
| 07 | 计算机指令编程原理 (opens new window) | 指令格式、寻址方式、编译流程、CISC/RISC/RISC-V | ⭐⭐⭐ |
| 08 | 计算机程序如何执行 (opens new window) | 流水线、分支预测、乱序执行、超标量、进程内存布局 | ⭐⭐⭐⭐ |
| 09 | 计算机内存设计原理 (opens new window) | 虚拟内存、分页分段、页表、TLB、内存保护、ASLR | ⭐⭐⭐⭐ |
| 10 | 计算机二进制和字节 (opens new window) | 进制转换、字符编码(UTF-8)、原码/反码/补码、IEEE754浮点数、位运算 | ⭐⭐ |
| 11 | 计算机异常处理机制 (opens new window) | 异常类型(中断/陷阱/故障/终止)、异常向量表、缺页、系统调用、安全机制 | ⭐⭐⭐ |
| 12 | 计算机IO操作和原理 (opens new window) | 阻塞/非阻塞/异步IO、select/poll/epoll、零拷贝、Reactor模式 | ⭐⭐⭐⭐ |
# 核心知识图谱
┌─────────────┐
│ 计算机体系 │
│ 结构原理 │
└──────┬──────┘
┌───────────────┼───────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ 处理器 │ │ 存储系统 │ │ IO系统 │
│ │ │ │ │ │
│ CPU设计 │ │ 存储层次 │ │ IO模型 │
│ 指令系统 │ │ 缓存设计 │ │ 中断/DMA │
│ 流水线 │ │ 虚拟内存 │ │ 总线系统 │
│ 分支预测 │ │ 页表/TLB │ │ 零拷贝 │
└──────────┘ └──────────┘ └──────────┘
│ │ │
└───────────────┼───────────────┘
▼
┌──────────────┐
│ 数据表示 │
│ 二进制/编码 │
│ 浮点数/补码 │
└──────────────┘
# 学习方法
本系列采用疑惑→答疑→论证→结论的教学模式:
- 疑惑:提出一个直觉上的困惑,引发思考
- 答疑:给出核心解释,理清概念
- 论证:通过对比、计算、实例进行深入分析
- 结论/技术演变:总结本质,展示技术的历史演进
这种方法帮助读者不仅"知其然",更"知其所以然"。
# 专栏介绍
计算机组成结构原理:从线上 IO 故障切入,讲解冯·诺依曼架构五大部件、存储程序思想、哈佛对比架构、性能公式与阿姆达尔定律,助程序员建立硬件直觉。
计算机存储器的原理:从购物车数据丢失 Bug 切入,详解存储分层(寄存器→缓存→内存→硬盘)、SRAM/DRAM 差异、局部性原理与 DDR 演进,揭示"数据在哪里、多快到"的核心矛盾。
计算机基础CPU设计:从多线程计数器丢失事故切入,解析 CPU 内部微架构、CISC/RISC 指令集对比、多核缓存一致性(MESI 协议、总线嗅探)、伪共享问题,以及 LongAdder 与 AtomicLong 的性能对比案例。
系统CPU缓存的设计:从数组遍历顺序差 10 倍的现象切入,剖析 L1/L2/L3 三级缓存、缓存行、内存地址映射、LRU 替换策略,最后用矩阵乘法优化案例展示从 12 秒优化到 0.8 秒的完整过程。
计算机输入输出设备:从文件传输慢于理论带宽的故障切入,详解 I/O 控制四方式(查询/中断/DMA/通道)、中断系统设计、DMA 底层原理,并通过 Nginx sendfile 案例讲解零拷贝技术。
计算机总线系统设计:从双路服务器 MySQL 延迟差 30% 的事故切入,覆盖总线分类、仲裁方式、ISA→PCI→PCIe 标准演进、南北桥到 NUMA 架构演变,以及 NVMe 读取的 10 步路径拆解。
计算机指令编程原理:从音视频 SDK 跨架构结果差异切入,讲解机器指令格式、七种寻址方式、编译链接全流程、CISC 与 RISC 设计哲学,以及 RISC-V 的技术趋势。
计算机程序如何执行:从排序数组遍历更快的分支预测问题切入,详解 CPU 五级流水线、数据/控制冒险、乱序执行、超标量与超线程,以及进程内存布局与函数调用栈。
计算机内存设计原理:从缓存模块段错误崩溃切入,剖析虚拟内存设计动机、分段分页机制、多级页表与 TLB 快表、内存保护与 ASLR,以及 malloc 一次分配的完整内核旅程。
计算机二进制和字节:从对账系统一分钱差异切入,讲解进制转换、大小端、字符编码发展史、原码/反码/补码设计意图、IEEE754 浮点数精度丢失根因,以及位运算实战技巧。
计算机异常处理机制:从 JNI 段错误导致服务假死的故障切入,讲解异常(中断/陷阱/故障/终止)的分类与处理流程、缺页与系统调用的底层实现、C 信号机制与 Java 异常的联系,以及栈溢出攻击与 ASLR/NX 等防护原理。
计算机IO操作和原理:从 Netty 静态文件 QPS 3k→18k 的零拷贝优化切入,详解阻塞/非阻塞/同步/异步 IO 模型、select/poll/epoll 演进、零拷贝(mmap/sendfile)技术、Page Cache 缓冲机制,以及 Reactor 与 Proactor 架构对比。