为你推荐
序一 寻宝处理器的引人入胜之旅
序二
序三 处理器——半导体巅峰,纵横四十年
前言
本书内容
本书特色
读者对象
致谢
第1章 漫游计算机世界
1.1 计算机的前世、今生、来世
1.1.1 计算机的诞生
1.1.2 从军用到民用——飞入寻常百姓家
1.1.3 个人计算机时代——英雄辈出的时代
1.1.4 手机——装在口袋的计算机
1.1.5 无处不在的计算机
1.1.6 计算机的来世
1.2 计算机分门别类
1.3 PC机结构探秘
1.3.1 处理器——一颗奔腾的心
1.3.2 存储器——大肚能容,容天下难容之事
1.3.3 主板与芯片组——架起沟通的桥梁
1.3.4 输入设备——五觉
1.3.5 显示设备——脸面
1.3.6 显卡——我贵,因为我专业
1.3.7 通信接口——关节
1.3.8 软件——计算机的灵魂
1.3.9 计算机产业发展态势
第2章 初识处理器——掀起你的盖头来
2.1 处理器是怎样工作的——处理器的硬件模型
2.1.1 硬连线电路——一定终身
2.1.2 通用计算机模型——硬件搭台,软件唱戏
2.2 怎样来使用处理器——处理器的编程模型
2.2.1 软硬不分
2.2.2 ISA横插一刀
2.3 处理器的分层模型
2.4 选什么样的处理器——适合的才是最好的
2.4.1 硬件指标——硬实力的竞争
2.4.2 软件指标——软实力的竞争
2.4.3 商业指标——在商言商
第3章 指令集体系结构——处理器的外表
3.1 指令集是什么
3.1.1 从处理器编程模型谈起——一切从模型开始
3.1.2 计算机语言——人与计算机沟通的桥梁
3.2 指令集发展的来龙去脉
3.2.1 CISC时代——粗放式扩张
3.2.2 RISC时代——优化配置资源,合理提升效率
3.2.3 后RISC时代——不管黑猫白猫,抓到老鼠就是好猫
3.3 指令集的五朵金花
3.3.1 x86——硕大的大象
3.3.2 ARM——稳扎稳打的蚁群
3.3.3 MIPS——优雅的孔雀
3.3.4 Power——昔日的贵族
3.3.5 C6000——偏安一隅的独立王国
3.3.6 至今仍在服役的元老们
3.4 地盘之争
3.4.1 地盘划分
3.4.2 x86、ARM之战
3.4.3 ARM、MIPS之战
3.5 汇编语言格式——没有规矩不成方圆
3.5.1 机器字长
3.5.2 操作数个数
3.5.3 操作数顺序
3.5.4 大小端——小问题,大折腾
3.5.5 指令类型——我们需要哪些指令
3.5.6 寻址方式——千万里,我追寻着你
3.5.7 总结
第4章 微架构——处理器的内心世界
4.1 跟着顺溜学流水线
4.1.1 顺溜的2级流水线
4.1.2 顺溜流水线的深入分析
4.2 从子弹射击到指令执行
4.2.1 最简单的3级流水线
4.2.2 史上最经典的5级流水线
4.2.3 DSP更深的流水线
4.2.4 流水线上的冒险——免不了磕磕绊绊
4.2.5 分支预测——以古为镜,可以知兴替
4.3 从顺序执行到乱序执行——因时制宜
4.3.1 乱序的概念
4.3.2 指令的相关
4.3.3 去除指令的相关性
4.3.4 处理器的乱序执行
4.4 处理器并行设计——并行,提高性能的不二法门
4.5 指令并行(Instruction Level Parallelism)
4.5.1 指令并行的“绿营”和“蓝营”
4.5.2 Superscalar处理器实例——Intel P4 CPU
4.5.3 VLIW处理器实例——TI C6000 DSP
4.5.4 Superscalar和VLIW总结
4.6 数据并行(Data Level Parallelism)
4.6.1 何为SIMD、MMX、SSE
4.6.2 几种不同形式的SSE指令
4.7 线程并行(Thread Level Parallelism)
4.7.1 多线程——时分复用
4.7.2 硬件多线程——让我来帮你一把
4.7.3 多核——从“芯”到“蕊”的跳变
4.7.4 各种硬件多线程对比
4.8 并行总结
4.9 微架构总结
4.9.1 处理器性能公式
4.9.2 通过微架构的改进提高程序执行效率
4.9.3 商用处理器微架构的选择
第5章 Cache——处理器的“肚量”
5.1 什么是Cache——探索既熟悉又陌生的领域
5.1.1 随处可见的Cache——技术来源于生活
5.1.2 处理器的Cache——一切都是收益和成本的权衡
5.2 处理器的Cache结构——探索那些鲜为人知的秘密
5.2.1 Cache的层次——层次化管理
5.2.2 Cache的工作方式——丘比特之剑,命中与未命中
5.2.3 Cache的映射方式——多对一的策略
5.2.4 Cache的写方式——你不需要知道真相
5.3 Cache一致性
5.3.1 一致性问题的产生——信息不对称导致的问题
5.3.2 Cache一致性的底层操作
5.3.3 Cache一致性协议
5.4 片内可寻址存储器——软件管理的Cache
第6章 编写高效代码——时间就是生命
6.1 软件效率——21世纪什么最重要?效率!
6.1.1 高效代码的意义——时间就是生命,时间就是金钱
6.1.2 代码剖析——没有调查,就没有发言权
6.2 减少指令数——勤俭持家
6.2.1 使用更快的算法——算法,程序设计的灵魂
6.2.2 选用合适的指令——合适的人做合适的事
6.2.3 降低数据精度——比特也要省着用
6.2.4 减少函数调用——不要老打断我
6.2.5 空间换时间——我们总是在走,却忘了停留
6.2.6 减少过保护——打不破的部门墙
6.3 减少处理器不擅长的操作——不要逼我做我不喜欢的事情
6.3.1 少用乘法
6.3.2 少用除法、求余
6.3.3 在精度允许的条件下,将浮点数定点化
6.3.4 尽量减少分支
6.3.5 将最可能进入的分支放在if中,而不是else中
6.4 优化内存访问——别让包袱拖垮了你
6.4.1 少使用数组,少使用指针
6.4.2 少用全局变量
6.4.3 一次多访问一些数据
6.4.4 数据对齐访问
6.4.5 大数据结构时的Cache line对齐
6.4.6 程序、数据访问符合Cache的时间、空间局部性
6.4.7 多线程编程时,避免false sharing
6.4.8 自己管理内存动态分配
6.4.9 隐藏数据搬移时间
6.5 充分利用编译器进行优化——编译器:我才是优化第一高手
6.5.1 编译器的结构——知己知彼,百战不殆
6.5.2 编译器提供了几级优化选项——分级管理
6.5.3 编译器会计算常量
6.5.4 简单的表达式化简
6.5.5 提取公共语句
6.5.6 循环展开、软件流水
6.5.7 自动向量化
6.5.8 高效的数据组织
6.5.9 指令并行化
6.5.10 编译器更懂处理器——百度更懂中文
6.6 利用多核来加速程序——人多力量大
6.6.1 并行计算
6.6.2 OpenMP
第7章 SOC——吸星大法
7.1 SOC大一统时代
7.1.1 SOC和IP
7.1.2 SOC市场驱动力
7.2 IP核
7.2.1 CPU IP
7.2.2 GPU IP
7.2.3 DSP IP
7.2.4 Video Engine IP
7.2.5 其他IP core
7.2.6 总结
第8章 “芯”路历程——明明白白我的“芯”
8.1 逻辑电路基础——计算机的基本构成
8.1.1 模拟、数字、逻辑的关系——细微之处探真知
8.1.2 组合逻辑电路——万丈高楼平地起
8.1.3 时序逻辑电路——你在我心中留下了记忆
8.1.4 微电子技术——微乎微乎,至于无形
8.2 芯片设计——芯者,国之大事,不可不察也
8.2.1 人类是怎么管理复杂事物的
8.2.2 芯片设计流程
8.2.3 硬件描述语言——软硬不分
8.2.4 逻辑综合
8.2.5 硬件描述语言与软件描述语言的差别
8.2.6 物理设计
8.3 芯片制造——点沙成金
8.3.1 探索微观世界
8.3.2 芯片制造流程
网友点评
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜