# SUMMARY * [简介](./README.md) * [开篇词 | 为什么你需要学习计算机组成原理?](./docs/91427.md) * [01 | 冯·诺依曼体系结构:计算机组成的金字塔](./docs/91793.md) * [02 | 给你一张知识地图,计算机组成原理应该这么学](./docs/92378.md) * [03 | 通过你的CPU主频,我们来谈谈“性能”究竟是什么?](./docs/92215.md) * [04 | 穿越功耗墙,我们该从哪些方面提升“性能”?](./docs/93246.md) * [05 | 计算机指令:让我们试试用纸带编程](./docs/93359.md) * [06 | 指令跳转:原来if...else就是goto](./docs/94075.md) * [07 | 函数调用:为什么会发生stack overflow?](./docs/94427.md) * [08 | ELF和静态链接:为什么程序无法同时在Linux和Windows下运行?](./docs/94470.md) * [09 | 程序装载:“640K内存”真的不够用么?](./docs/95223.md) * [10 | 动态链接:程序内部的“共享单车”](./docs/95244.md) * [11 | 二进制编码:“手持两把锟斤拷,口中疾呼烫烫烫”?](./docs/95844.md) * [12 | 理解电路:从电报机到门电路,我们如何做到“千里传信”?](./docs/95868.md) * [13 | 加法器:如何像搭乐高一样搭电路(上)?](./docs/95883.md) * [14 | 乘法器:如何像搭乐高一样搭电路(下)?](./docs/97477.md) * [15 | 浮点数和定点数(上):怎么用有限的Bit表示尽可能多的信息?](./docs/97866.md) * [16 | 浮点数和定点数(下):深入理解浮点数到底有什么用?](./docs/98312.md) * [17 | 建立数据通路(上):指令+运算=CPU](./docs/98872.md) * [18 | 建立数据通路(中):指令+运算=CPU](./docs/99092.md) * [19 | 建立数据通路(下):指令+运算=CPU](./docs/99505.md) * [20 | 面向流水线的指令设计(上):一心多用的现代CPU](./docs/99523.md) * [21 | 面向流水线的指令设计(下):奔腾4是怎么失败的?](./docs/100554.md) * [22 | 冒险和预测(一):hazard是“危”也是“机”](./docs/100569.md) * [23 | 冒险和预测(二):流水线里的接力赛](./docs/101172.md) * [24 | 冒险和预测(三):CPU里的“线程池”](./docs/101436.md) * [25 | 冒险和预测(四):今天下雨了,明天还会下雨么?](./docs/102166.md) * [26 | Superscalar和VLIW:如何让CPU的吞吐率超过1?](./docs/102888.md) * [27 | SIMD:如何加速矩阵乘法?](./docs/103433.md) * [28 | 异常和中断:程序出错了怎么办?](./docs/103717.md) * [29 | CISC和RISC:为什么手机芯片都是ARM?](./docs/104259.md) * [30 | GPU(上):为什么玩游戏需要使用GPU?](./docs/104747.md) * [31 | GPU(下):为什么深度学习需要使用GPU?](./docs/105401.md) * [32 | FPGA和ASIC:计算机体系结构的黄金时代](./docs/105974.md) * [33 | 解读TPU:设计和拆解一块ASIC芯片](./docs/106476.md) * [34 | 理解虚拟机:你在云上拿到的计算机是什么样的?](./docs/107183.md) * [35 | 存储器层次结构全景:数据存储的大金字塔长什么样?](./docs/107422.md) * [36 | 局部性原理:数据库性能跟不上,加个缓存就好了?](./docs/107447.md) * [37 | 高速缓存(上):“4毫秒”究竟值多少钱?](./docs/107477.md) * [38 | 高速缓存(下):你确定你的数据更新了么?](./docs/109331.md) * [39 | MESI协议:如何让多核CPU的高速缓存保持一致?](./docs/109874.md) * [40 | 理解内存(上):虚拟内存和内存保护是什么?](./docs/110474.md) * [41 | 理解内存(下):解析TLB和内存保护](./docs/111172.md) * [42 | 总线:计算机内部的高速公路](./docs/111952.md) * [43 | 输入输出设备:我们并不是只能用灯泡显示“0”和“1”](./docs/113361.md) * [44 | 理解IO_WAIT:I/O性能到底是怎么回事儿?](./docs/113809.md) * [45 | 机械硬盘:Google早期用过的“黑科技”](./docs/116104.md) * [46 | SSD硬盘(上):如何完成性能优化的KPI?](./docs/117144.md) * [47 | SSD硬盘(下):如何完成性能优化的KPI?](./docs/118191.md) * [48 | DMA:为什么Kafka这么快?](./docs/118657.md) * [49 | 数据完整性(上):硬件坏了怎么办?](./docs/119901.md) * [50 | 数据完整性(下):如何还原犯罪现场?](./docs/123407.md) * [51 | 分布式计算:如果所有人的大脑都联网会怎样?](./docs/128197.md) * [52 | 设计大型DMP系统(上):MongoDB并不是什么灵丹妙药](./docs/130507.md) * [53 | 设计大型DMP系统(下):SSD拯救了所有的DBA](./docs/131720.md) * [54 | 理解Disruptor(上):带你体会CPU高速缓存的风驰电掣](./docs/132477.md) * [55 | 理解Disruptor(下):不需要换挡和踩刹车的CPU,有多快?](./docs/134020.md) * [结束语 | 知也无涯,愿你也享受发现的乐趣](./docs/134999.md) * [特别加餐 | 我在2019年F8大会的两日见闻录](./docs/93720.md) * [FAQ第一期 | 学与不学,知识就在那里,不如就先学好了](./docs/111447.md) * [用户故事 | 赵文海:怕什么真理无穷,进一寸有一寸的欢喜](./docs/118482.md) * [FAQ第二期 | 世界上第一个编程语言是怎么来的?](./docs/120012.md) * [特别加餐 | 我的一天怎么过?](./docs/129197.md)