标题：大话处理器
内容简介
处理器是IT、通信、电子产业的基石，没有处理器，信息产业大厦就如同建立  在沙滩之上。《大话处理器:处理器基础知识读本》是一本图文并茂、生动幽默的处理器科普读本，全书行文风趣幽默，用类比来解释晦涩的技术，用图画来代替枯燥的文字。本着科技以人为本的理念，《大话处理器:处理器基础知识读本》除了技术外，还介绍了大量人物和公司的故事，供大家闲读。
《大话处理器:处理器基础知识读本》的主要读者是IT、通信、电子、半导体行业的从业人员以及学生。喜欢技术的看技术，不喜欢技术的看故事。
编辑推荐
《大话处理器:处理器基础知识读本》特色：国内首本图文并茂、生动幽默的处理器科普读本；全面揭秘处理器核心技术；恰当、幽默的类比让人叹为观止；丰富的人物、公司介绍，带您遨游计算机、半导体世界。
《大话处理器:处理器基础知识读本》部分章节曾在中国第一通信社区——通信人家园论坛上连载，得到了网友的广泛好评，帖子迅速被置顶、加精、进入论坛首页，也在公司内部被大量传播。
媒体推荐
楼主很强很油菜！
——robotbob
顶起，很直观，很具体，楼主快点。
——gdxky
LZ这样的高人应该推荐到高校做教授，那将是民族之幸哦。写的理论透彻、根本，文字通俗简练，语言风趣形象，好！
——shore70
希望中国多点像楼主那样的人才！
——davidchan110
楼主真强悍，讲解通俗易懂，顶一下！
——汉江之畔
真的讲的好，让我这个处理器的门外汉也产生了兴趣！
——tian_mengguang
要是做总的软件架构工作，你一定能成为大师级的。
——我爱生活
楼主，我虽然不是学数字信号处理出身，但是你的讲解太伟大了。我真的手不释卷啊！快点刷新吧。
——中飞人1234
越牛的人讲的东西越通俗易懂。
——时光机器007
写得真好！通俗易懂，比较形象化。
——ksyjk
属于深入学习的人才能写出这种文字，现在太需要这样的人才了，更希望看到的朋友也别顾着只叫好，大家以大侠为榜样，在各自的领域中都能做到深入浅出，与己与人都是一笔财富！
——yucheng_xiao
呵呵，佩服楼主的专业知识是如此的给力啊！
——xiao麦子
写的不错，通俗易懂，楼主威武啊！
——caodianxin2011
楼主太有创意了，这样的帖子太强了！
——lsmx01
作者简介
万木杨，网名木兮清扬，华为公司服务近6年，曾任软件工程师、算法工程师、系统工程师，擅长多媒体算法设计和编写高效代码。
作者自2004年起开始研究多媒体算法，从语音识别，到人脸动画，再到视频编解码，足迹遍布语音、图像、视频、3D。自2006年在DSP上编写程序，从此开始深入研究处理器内部结构，后来接触过大量的半导体公司和处理器芯片，对处理器技术和产品有着深刻的理解。
闲暇之余，作者喜爱读书，多年来保持平均两周一本的速度。
目录
第1章 漫游计算机世界 1
1.1 计算机的前世、今生、来世 3
1.1.1 计算机的诞生 3
1.1.2 从军用到民用——飞入寻常百姓家 12
1.1.3 个人计算机时代——英雄辈出的时代 15
1.1.4 手机——装在口袋的计算机 25
1.1.5 无处不在的计算机 31
1.1.6 计算机的来世 31
1.2 计算机分门别类 33
1.3 PC机结构探秘 34
1.3.1 处理器——一颗奔腾的心 34
1.3.2 存储器——大肚能容，容天下难容之事 36
1.3.3 主板与芯片组——架起沟通的桥梁 38
1.3.4 输入设备——五觉 39
1.3.5 显示设备——脸面 42
1.3.6 显卡——我贵，因为我专业 47
1.3.7 通信接口——关节 47
1.3.8 软件——计算机的灵魂 49
1.3.9 计算机产业发展态势 50
第2章 初识处理器——掀起你的盖头来 53
2.1 处理器是怎样工作的——处理器的硬件模型 55
2.1.1 硬连线电路——一定终身 55
2.1.2 通用计算机模型——硬件搭台，软件唱戏 56
2.2 怎样来使用处理器——处理器的编程模型 57
2.2.1 软硬不分 57
2.2.2 ISA横插一刀 57
2.3 处理器的分层模型 58
2.4 选什么样的处理器——适合的才是最好的 59
2.4.1 硬件指标——硬实力的竞争 59
2.4.2 软件指标——软实力的竞争 62
2.4.3 商业指标——在商言商 63
第3章 指令集体系结构——处理器的外表 65
3.1 指令集是什么 67
3.1.1 从处理器编程模型谈起——一切从模型开始 67
3.1.2 计算机语言——人与计算机沟通的桥梁 68
3.2 指令集发展的来龙去脉 69
3.2.1 CISC时代——粗放式扩张 69
3.2.2 RISC时代——优化配置资源，合理提升效率 70
3.2.3 后RISC时代——不管黑猫白猫，抓到老鼠就是好猫 71
3.3 指令集的五朵金花 73
3.3.1 x86——硕大的大象 73
3.3.2 ARM——稳扎稳打的蚁群 74
3.3.3 MIPS——优雅的孔雀 75
3.3.4 Power——昔日的贵族 76
3.3.5 C6000——偏安一隅的独立王国 77
3.3.6 至今仍在服役的元老们 78
3.4 地盘之争 78
3.4.1 地盘划分 79
3.4.2 x86、ARM之战 80
3.4.3 ARM、MIPS之战 80
3.5 汇编语言格式——没有规矩不成方圆 81
3.5.1 机器字长 81
3.5.2 操作数个数 82
3.5.3 操作数顺序 83
3.5.4 大小端——小问题，大折腾 83
3.5.5 指令类型——我们需要哪些指令 83
3.5.6 寻址方式——千万里，我追寻着你 84
3.5.7 总结 85
第4章 微架构——处理器的内心世界 87
4.1 跟着顺溜学流水线 89
4.1.1 顺溜的2级流水线 89
4.1.2 顺溜流水线的深入分析 90
4.2 从子弹射击到指令执行 93
4.2.1 最简单的3级流水线 93
4.2.2 史上最经典的5级流水线 95
4.2.3 DSP更深的流水线 97
4.2.4 流水线上的冒险——免不了磕磕绊绊 98
4.2.5 分支预测——以古为镜，可以知兴替 103
4.3 从顺序执行到乱序执行——因时制宜 107
4.3.1 乱序的概念 107
4.3.2 指令的相关 108
4.3.3 去除指令的相关性 110
4.3.4 处理器的乱序执行 113
4.4 处理器并行设计——并行，提高性能的不二法门 117
4.5 指令并行（Instruction Level Parallelism） 118
4.5.1 指令并行的“绿营”和“蓝营” 118
4.5.2 Superscalar处理器实例——Intel P4 CPU 119
4.5.3 VLIW处理器实例——TI C6000 DSP 125
4.5.4 Superscalar和VLIW总结 130
4.6 数据并行（Data Level Parallelism） 130
4.6.1 何为SIMD、MMX、SSE 130
4.6.2 几种不同形式的SSE指令 132
4.7 线程并行（Thread Level Parallelism） 133
4.7.1 多线程——时分复用 133
4.7.2 硬件多线程——让我来帮你一把 135
4.7.3 多核——从“芯”到“蕊”的跳变 136
4.7.4 各种硬件多线程对比 138
4.8 并行总结 139
4.9 微架构总结 142
4.9.1 处理器性能公式 142
4.9.2 通过微架构的改进提高程序执行效率 142
4.9.3 商用处理器微架构的选择 143
第5章 Cache——处理器的“肚量” 145
5.1 什么是Cache——探索既熟悉又陌生的领域 147
5.1.1 随处可见的Cache——技术来源于生活 147
5.12 处理器的Cache——一切都是收益和成本的权衡 147
5.2 处理器的Cache结构——探索那些鲜为人知的秘密 150
5.2.1 Cache的层次——层次化管理 150
5.2.2 Cache的工作方式——丘比特之剑，命中与未命中 151
5.2.3 Cache的映射方式——多对一的策略 152
5.2.4 Cache的写方式——你不需要知道真相 156
5.3 Cache一致性 158
5.3.1 一致性问题的产生——信息不对称导致的问题 158
5.3.2 Cache一致性的底层操作 159
5.3.3 Cache一致性协议 160
5.4 片内可寻址存储器——软件管理的Cache 163
第6章 编写高效代码——时间就是生命 167
6.1 软件效率——21世纪什么最重要？效率！ 169
6.1.1 高效代码的意义——时间就是生命，时间就是金钱 169
6.1.2 代码剖析——没有调查，就没有发言权 169
6.2 减少指令数——勤俭持家 171
6.2.1 使用更快的算法——算法，程序设计的灵魂 171
6.2.2 选用合适的指令——合适的人做合适的事 172
6.2.3 降低数据精度——比特也要省着用 173
6.2.4 减少函数调用——不要老打断我 173
6.2.5 空间换时间——我们总是在走，却忘了停留 174
6.2.6 减少过保护——打不破的部门墙 176
6.3 减少处理器不擅长的操作——不要逼我做我不喜欢的事情 176
6.3.1 少用乘法 177
6.3.2 少用除法、求余 177
6.3.3 在精度允许的条件下，将浮点数定点化 177
6.3.4 尽量减少分支 178
6.3.5 将最可能进入的分支放在 if中，而不是else中 179
6.4 优化内存访问——别让包袱拖垮了你 180
6.4.1 少使用数组，少使用指针 181
6.4.2 少用全局变量 181
6.4.3 一次多访问一些数据 182
6.4.4 数据对齐访问 182
6.4.5 大数据结构时的Cache line对齐 183
6.4.6 程序、数据访问符合Cache的时间、空间局部性 183
6.4.7 多线程编程时，避免false sharing 185
6.4.8 自己管理内存动态分配 185
6.4.9 隐藏数据搬移时间 186
6.5 充分利用编译器进行优化——编译器：我才是优化第一高手 187
6.5.1 编译器的结构——知己知彼，百战不殆 187
6.5.2 编译器提供了几级优化选项——分级管理 188
6.5.3 编译器会计算常量 188
6.5.4 简单的表达式化简 188
6.5.5 提取公共语句 189
6.5.6 循环展开、软件流水 190
6.5.7 自动向量化 190
6.5.8 高效的数据组织 191
6.5.9 指令并行化 191
6.5.10 编译器更懂处理器——百度更懂中文 192
6.6 利用多核来加速程序——人多力量大 193
6.6.1 并行计算 193
6.6.2 OpenMP 197
第7章 SOC——吸星大法 199
7.1 SOC大一统时代 201
7.1.1 SOC和IP 201
7.1.2 SOC市场驱动力 202
7.2 IP核 202
7.2.1 CPU IP 204
7.2.2 GPU IP 205
7.2.3 DSP IP 205
7.2.4 Video Engine IP 208
7.2.5 其他IP core 209
7.2.6 总结 210
第8章 “芯”路历程——明明白白我的“芯” 211
8.1 逻辑电路基础——计算机的基本构成 213
8.1.1 模拟、数字、逻辑的关系——细微之处探真知 213
8.1.2 组合逻辑电路——万丈高楼平地起 216
8.1.3 时序逻辑电路——你在我心中留下了记忆 219
8.1.4 微电子技术——微乎微乎，至于无形 221
8.2 芯片设计——芯者，国之大事，不可不察也 224
8.2.1 人类是怎么管理复杂事物的 224
8.2.2 芯片设计流程 227
8.2.3 硬件描述语言——软硬不分 227
8.2.4 逻辑综合 229
8.2.5 硬件描述语言与软件描述语言的差别 230
8.2.6 物理设计 231
8.3 芯片制造——点沙成金 233
8.3.1 探索微观世界 233
8.3.2 芯片制造流程 234