第1章? ? 引言
? ? 1.1? ? 本书组织结构
? ? 1.2? ? 进化过程
? ? 1.3? ? 计算机发展阶段划分
? ? ? ? 1.3.1? ? 第一代计算机
? ? ? ? 1.3.2? ? 第二代计算机
? ? ? ? 1.3.3? ? 第三代计算机
? ? ? ? 1.3.4? ? 第四代计算机
? ? ? ? 1.3.5? ? 第五代计算机
? ? 1.4? ? 云,普适,网格和超并行计算机
? ? 1.5? ? 未来
? ? 小结
第2章? ? 基础知识
? ? 2.1? ? 计算机组成
? ? ? ? 2.1.1? ? Flynn分类法
? ? ? ? 2.1.2? ? 连接方式
? ? ? ? 2.1.3? ? 计算机结构层次视图
? ? 2.2? ? 计算机基本原理
? ? 2.3? ? 数字格式
? ? ? ? 2.3.1? ? 无符号二进制
? ? ? ? 2.3.2? ? 原码
? ? ? ? 2.3.3? ? 反码
? ? ? ? 2.3.4? ? 补码
? ? ? ? 2.3.5? ? 移码(excess-n)
? ? ? ? 2.3.6? ? BCD码
? ? ? ? 2.3.7? ? 定点数表示法
? ? ? ? 2.3.8? ? 符号扩展
? ? 2.4? ? 算术运算
? ? ? ? 2.4.1? ? 加法
? ? ? ? 2.4.2? ? 并行进位传递加法器
? ? ? ? 2.4.3? ? 超前进位
? ? ? ? 2.4.4? ? 减法
? ? 2.5? ? 乘法
? ? ? ? 2.5.1? ? 加法迭代法
? ? ? ? 2.5.2? ? 部分积方法
? ? ? ? 2.5.3? ? 移位加方法
? ? ? ? 2.5.4? ? Booth和Robertson方法
? ? 2.6? ? 除法
? ? 2.7? ? 定点数格式的运算
? ? ? ? 2.7.1? ? 定点数的运算
? ? ? ? 2.7.2? ? 定点数的乘除
? ? 2.8? ? 浮点数
? ? ? ? 2.8.1? ? 广义浮点数
? ? ? ? 2.8.2? ? IEEE754浮点标准
? ? ? ? 2.8.3? ? IEEE754标准模式
? ? ? ? ? ? 2.8.3.1? ? 规格化模式
? ? ? ? ? ? 2.8.3.2? ? 非规格化模式
? ? ? ? ? ? 2.8.3.3? ? 其他模式数
? ? ? ? 2.8.4? ? IEEE754数的范围
? ? 2.9? ? 浮点数处理
? ? ? ? 2.9.1? ? IEEE754数的加减运算
? ? ? ? 2.9.2? ? IEEE754数的乘除法
? ? ? ? 2.9.3? ? IEEE754中间格式
? ? ? ? 2.9.4? ? 舍入
? ? 小结? ? 思考题
第3章? ? CPU基础
? ? 3.1? ? 什么是计算机
? ? 3.2? ? 让计算机为你服务
? ? ? ? 3.2.1? ? 程序存储
? ? ? ? 3.2.2? ? 存储架构
? ? ? ? 3.2.3? ? 程序传输
? ? ? ? 3.2.4? ? 控制单元
? ? ? ? 3.2.5? ? 微指令
? ? ? ? 3.2.6? ? RISC和CISC的对比
? ? ? ? 3.2.7? ? 处理器实例
? ? 3.3? ? 指令处理
? ? ? ? 3.3.1? ? 指令集
? ? ? ? 3.3.2? ? 取指和译码
? ? ? ? ? ? 3.3.2.1? ? 指令译码
? ? ? ? ? ? 3.3.2.2? ? 取操作数
? ? ? ? ? ? 3.3.2.3? ? 分支
? ? ? ? ? ? 3.3.2.4? ? 立即数
? ? ? ? 3.3.3? ? 压缩指令集
? ? ? ? 3.3.4? ? 寻址模式
? ? ? ? 3.3.5? ? 堆栈机和逆波兰表示法
? ? 3.4? ? 数据处理
? ? ? ? 3.4.1? ? 数据的格式和表达
? ? ? ? 3.4.2? ? 数据流
? ? ? ? 3.4.3? ? 数据存储
? ? ? ? 3.4.4? ? 内部数据
? ? ? ? 3.4.5? ? 数据处理
? ? ? ? ? ? 3.4.5.1? ? 在小位宽CPU上处理大位宽数字
? ? ? ? ? ? 3.4.5.2? ? 定点CPU上的浮点数
? ? ? ? ? ? 3.4.5.3? ? 复数
? ? 3.5? ? 自顶向下方法
? ? ? ? 3.5.1? ? 计算机的能力
? ? ? ? ? ? 3.5.1.1? ? 功能
? ? ? ? ? ? 3.5.1.2? ? 时钟频率
? ? ? ? ? ? 3.5.1.3? ? 位宽
? ? ? ? ? ? 3.5.1.4? ? 内存
? ? ? ? 3.5.2? ? 性能衡量和统计
? ? ? ? 3.5.3? ? 性能评估
? ? 小结? ? 思考题
第4章? ? 处理器内部组成
? ? 4.1? ? 内部总线结构
? ? ? ? 4.1.1? ? 程序员的角度
? ? ? ? 4.1.2? ? 分解互联排列
? ? ? ? 4.1.3? ? ADSP21xx总线排列
? ? ? ? 4.1.4? ? 数据与程序同时访存
? ? ? ? 4.1.5? ? 双总线体系结构
? ? ? ? 4.1.6? ? 单总线体系结构
? ? 4.2? ? 算术逻辑单元
? ? ? ? 4.2.1? ? ALU功能
? ? ? ? 4.2.2? ? ALU设计
? ? 4.3? ? 内存管理单元
? ? ? ? 4.3.1? ? 对虚拟存储的需求
? ? ? ? 4.3.2? ? MMU操作
? ? ? ? 4.3.3? ? 退回算法
? ? ? ? 4.3.4? ? 内部存储碎片和片段
? ? ? ? 4.3.5? ? 外部碎片
? ? ? ? 4.3.6? ? 改进的MMU
? ? ? ? 4.3.7? ? 内存保护
? ? 4.4? ? cache
? ? ? ? 4.4.1? ? 直接相联cache
? ? ? ? 4.4.2? ? 组相联cache
? ? ? ? 4.4.3? ? 全相联cache
? ? ? ? 4.4.4? ? 局部性原则
? ? ? ? 4.4.5? ? cache替换算法
? ? ? ? 4.4.6? ? cache性能
? ? ? ? 4.4.7? ? cache一致性
? ? 4.5? ? 协处理器
? ? 4.6? ? 浮点运算单元
? ? ? ? 4.6.1? ? 浮点仿真
? ? 4.7? ? SIMD流指令扩展(SSE)和多媒体扩展
? ? ? ? 4.7.1? ? 多媒体扩展(MMX)
? ? ? ? 4.7.2? ? MMX实现
? ? ? ? 4.7.3? ? MMX的使用
? ? ? ? 4.7.4? ? SIMD流指令扩展(SSE)
? ? ? ? 4.7.5? ? 使用SSE和MMX
? ? 4.8? ? 嵌入式系统中的协处理
? ? 小结? ? 思考题
第5章? ? 提高CPU性能
? ? 5.1? ? CPU加速技术简介
? ? 5.2? ? 流水线
? ? ? ? 5.2.1? ? 多功能流水线
? ? ? ? 5.2.2? ? 动态流水线
? ? ? ? 5.2.3? ? 改变流水线模式
? ? ? ? 5.2.4? ? 数据相关冒险
? ? ? ? 5.2.5? ? 条件冒险
? ? ? ? 5.2.6? ? 条件分支
? ? ? ? 5.2.7? ? 编译时流水线补偿
? ? ? ? 5.2.8? ? 相对地址分支
? ? ? ? 5.2.9? ? 流水线的指令集补偿
? ? ? ? 5.2.10? ? 运行时流水线补偿
? ? 5.3? ? 复杂指令集(CISC)和精简指令集(RISC)
? ? 5.4? ? 超标量体系结构
? ? ? ? 5.4.1? ? 简单超标量
? ? ? ? 5.4.2? ? 多发送超标量
? ? ? ? 5.4.3? ? 超标量的性能
? ? 5.5? ? 每周期的指令数
? ? ? ? 5.5.1? ? 不同体系结构的IPC
? ? ? ? 5.5.2? ? IPC度量
? ? 5.6? ? 硬件加速器
? ? ? ? 5.6.1? ? 零开销循环
? ? ? ? 5.6.2? ? 地址处理硬件
? ? ? ? 5.6.3? ? 影子寄存器
? ? 5.7? ? 分支预测
? ? ? ? 5.7.1? ? 分支预测的必要性
? ? ? ? 5.7.2? ? 单T位预测器
? ? ? ? 5.7.3? ? 双位预测器
? ? ? ? 5.7.4? ? 计数器和移位器预测器
? ? ? ? 5.7.5? ? 局部分支预测器
? ? ? ? 5.7.6? ? 全局分支预测器
? ? ? ? 5.7.7? ? G选择预测器
? ? ? ? 5.7.8? ? G共享预测器
? ? ? ? 5.7.9? ? 混合预测器
? ? ? ? 5.7.10? ? 分支目标缓冲
? ? ? ? 5.7.11? ? 基本代码段
? ? ? ? 5.7.12? ? 分支预测总结
? ? 5.8? ? 并行机器
? ? ? ? 5.8.1? ? SISD向MIMD的演变
? ? ? ? 5.8.2? ? 为提高性能而采用并行
? ? ? ? 5.8.3? ? 其他并行处理
? ? 5.9? ? Tomasulo算法
? ? ? ? 5.9.1? ? Tomasulo算法的原理
? ? ? ? 5.9.2? ? Tomasulo系统的例子
? ? ? ? 5.9.3? ? 嵌入式系统中的Tomasulo算法
? ? 小结? ? 思考题
第6章? ? 外部总线
? ? 6.1? ? 总线接口
? ? ? ? 6.1.1? ? 总线控制信号
? ? ? ? 6.1.2? ? 直接存储器存取(DMA)
? ? 6.2? ? 并行总线规范
? ? 6.3? ? 标准接口
? ? ? ? 6.3.1? ? 系统控制接口
? ? ? ? 6.3.2? ? 系统数据总线
? ? ? ? ? ? 6.3.2.1? ? ISA总线及其衍生总线
? ? ? ? ? ? 6.3.2.2? ? PC/104
? ? ? ? ? ? 6.3.2.3? ? PCI
? ? ? ? ? ? 6.3.2.4? ? LVDS
? ? ? ? 6.3.3? ? 输入/输出总线
? ? ? ? 6.3.4? ? 外设器件总线
? ? ? ? 6.3.5? ? 与网络设备的接口
? ? 6.4? ? 实时性问题
? ? ? ? 6.4.1? ? 外部激励
? ? ? ? 6.4.2? ? 中断
? ? ? ? 6.4.3? ? 实时性定义
? ? ? ? 6.4.4? ? 时间范围参数
? ? ? ? 6.4.5? ? 硬件体系结构对实时操作系统的支持
? ? 6.5? ? 中断和中断处理
? ? ? ? 6.5.1? ? 中断的重要性
? ? ? ? 6.5.2? ? 中断过程
? ? ? ? ? ? 6.5.2.1? ? 中断事件通知处理器
? ? ? ? ? ? 6.5.2.2? ? CPU完成正在进行的工作
? ? ? ? ? ? 6.5.2.3? ? 转入中断服务例程
? ? ? ? ? ? 6.5.2.4? ? 中断重定向
? ? ? ? 6.5.3? ? 高级中断处理
? ? ? ? 6.5.4? ? 共享中断
? ? ? ? 6.5.5? ? 可重入代码
? ? ? ? 6.5.6? ? 软件中断
? ? 6.6? ? 无线
? ? ? ? 6.6.1? ? 无线技术
? ? ? ? 6.6.2? ? 无线接口
? ? ? ? 6.6.3? ? 无线相关问题
? ? 小结? ? 思考题
第7章? ? 实用嵌入式CPU
? ? 7.1? ? 概述
? ? 7.2? ? 微处理器不只是核
? ? 7.3? ? 功能需求
? ? 7.4? ? 时钟
? ? 7.5? ? 时钟与功耗
? ? ? ? 7.5.1? ? 传输延迟
? ? ? ? 7.5.2? ? 电流相关问题
? ? ? ? 7.5.3? ? 时钟问题解决方法
? ? ? ? 7.5.4? ? 低电压设计
? ? 7.6? ? 存储
? ? ? ? 7.6.1? ? 早期的计算机存储
? ? ? ? 7.6.2? ? 只读存储器
? ? ? ? 7.6.3? ? 随机存取存储器
? ? ? ? ? ? 7.6.3.1? ? 静态RAM
? ? ? ? ? ? 7.6.3.2? ? 动态RAM
? ? ? ? ? ? 7.6.3.3? ? DRAM的寻址机制
? ? 7.7? ? 分页与重叠
? ? 7.8? ? 嵌入式系统中的存储
? ? ? ? 7.8.1? ? 非易失存储器
? ? ? ? 7.8.2? ? 易失存储器
? ? ? ? 7.8.3? ? 其他存储器
? ? 7.9? ? 测试和验证
? ? ? ? 7.9.1? ? 集成电路设计和制造问题
? ? ? ? 7.9.2? ? 内置自测(BIST)
? ? ? ? 7.9.3? ? 联合测试行动小组(JTAG)
? ? 7.10? ? 错误检测和纠正
? ? 7.11? ? 看门狗定时器和复位监测
? ? 7.12? ? 逆向工程
? ? ? ? 7.12.1? ? 逆向工程过程
? ? ? ? ? ? 7.12.1.1? ? 功能分析
? ? ? ? ? ? 7.12.1.2? ? 物理结构分析
? ? ? ? ? ? 7.12.1.3? ? 材料清单
? ? ? ? ? ? 7.12.1.4? ? 系统架构
? ? ? ? 7.12.2? ? 详细的物理布局
? ? ? ? ? ? 7.12.2.1? ? 电气连接原理图
? ? ? ? ? ? 7.12.2.2? ? 存储程序
? ? ? ? ? ? 7.12.2.3? ? 软件
? ? 7.13? ? 防止逆向工程
? ? ? ? 7.13.1? ? 存储程序的被动模糊
? ? ? ? 7.13.2? ? 可编程逻辑家族
? ? ? ? 7.13.3? ? 主动RE防范
? ? ? ? 7.13.4? ? 主动RE防范分类
? ? 小结? ? 思考题
第8章? ? CPU设计
? ? 8.1? ? 软核处理器
? ? ? ? 8.1.1? ? 微处理器不仅仅有处理器核
? ? ? ? 8.1.2? ? 软核处理器的优点
? ? ? ? ? ? 8.1.2.1? ? 性能
? ? ? ? ? ? 8.1.2.2? ? 可用性
? ? ? ? ? ? 8.1.2.3? ? 效率
? ? ? ? ? ? 8.1.2.4? ? 人为因素
? ? 8.2? ? 软硬件协同设计
? ? 8.3? ? 现成的软核
? ? 8.4? ? 制作自己的软核
? ? 8.5? ? CPU设计规格说明
? ? ? ? 8.5.1? ? CPU体系结构
? ? ? ? 8.5.2? ? 总线
? ? ? ? 8.5.3? ? 程序及数据存储
? ? ? ? 8.5.4? ? 逻辑运算
? ? ? ? 8.5.5? ? 指令处理
? ? ? ? 8.5.6? ? 系统控制
? ? 8.6? ? 指令集
? ? ? ? 8.6.1? ? CPU控制
? ? ? ? ? ? 8.6.1.1? ? 闲置状态
? ? ? ? ? ? 8.6.1.2? ? 取指状态
? ? ? ? ? ? 8.6.1.3? ? 执行状态
? ? 8.7? ? CPU实现
? ? ? ? 8.7.1? ? 测试的重要性
? ? ? ? 8.7.2? ? 定义操作和状态:defs.v
? ? ? ? 8.7.3? ? 第一个小模块:counter.v
? ? ? ? 8.7.4? ? CPU控制:state.v
? ? ? ? 8.7.5? ? 程序和变量存储:ram.v
? ? ? ? 8.7.6? ? 堆栈:stack.v
? ? ? ? 8.7.7? ? 算术,逻辑和乘法单元:alu.v
? ? ? ? 8.7.8? ? 综合测试:tinycpu.v
? ? 8.8? ? CPU测试及运行
? ? 8.9? ? 编程并使用CPU
? ? ? ? 8.9.1? ? 编写TinyCPU程序
? ? ? ? 8.9.2? ? TinyCPU编程工具
? ? 小结? ? 思考题
第9章? ? 未来
? ? 9.1? ? 单比特体系结构
? ? ? ? 9.1.1? ? 位串行加法
? ? ? ? 9.1.2? ? 位串行减法
? ? ? ? 9.1.3? ? 位串行逻辑电路和处理
? ? 9.2? ? 超长指令字体系结构
? ? ? ? 9.2.1? ? VLIW的基本原理
? ? ? ? 9.2.2? ? VLIW的难题
? ? 9.3? ? 并行与大规模并行计算机
? ? ? ? 9.3.1? ? 大型计算机集群
? ? ? ? 9.3.2? ? 小型计算机集群
? ? ? ? ? ? 9.3.2.1? ? 从嵌入式系统中解放计算资源
? ? ? ? ? ? 9.3.2.2? ? 并行处理单元
? ? ? ? 9.3.3? ? 并行和集群处理注意事项
? ? ? ? 9.3.4? ? 互连策略
? ? 9.4? ? 异步处理器
? ? ? ? 9.4.1? ? 数据流控制
? ? ? ? 9.4.2? ? 避免流水线冒险
? ? 9.5? ? 替代数字格式系统
? ? ? ? 9.5.1? ? 多值逻辑
? ? ? ? 9.5.2? ? 带符号数字的表示
? ? 9.6? ? 光计算
? ? ? ? 9.6.1? ? 光电全加器
? ? ? ? 9.6.2? ? 光电底板
? ? 9.7? ? 科幻小说还是未来的现实
? ? ? ? 9.7.1? ? 分布式计算
? ? ? ? 9.7.2? ? 湿件(大脑)
? ? 小结
附录A? ? 内存大小的标准表示方法
附录B? ? 开放系统互连模型
? ? B.1? ? 引言
? ? B.2? ? OSI层次
? ? B.3? ? 小结
附录C? ? 探索cache大小和结构安排的权衡设计方法
? ? C.1? ? 引言
? ? C.2? ? 准备工作
? ? C.3? ? 安装Cacti和Dinero
? ? C.4? ? 工具的使用
? ? C.5? ? 不同cache设计方案的实验
? ? C.6? ? cache设计中的进一步信息
? ? 思考题
附录D? ? 嵌入式计算机上的无线技术
? ? D.1? ? 引言
? ? D.2? ? 802.11a,b和g
? ? D.3? ? 802.11n
? ? D.4? ? 802.20
? ? D.5? ? 802.16
? ? D.6? ? 蓝牙
? ? D.7? ? GSM
? ? D.8? ? GPRS
? ? D.9? ? ZigBee
? ? D.10? ? 无线USB
? ? D.11? ? 近距离通信
? ? D.12? ? WiBro
? ? D.13? ? 无线设备总结
? ? D.14? ? 应用举例
? ? D.15? ? 小结
附录E? ? 编译和仿真TinyCPU的工具
? ? E.1? ? 准备和软件获取
? ? E.2? ? 如何编译和仿真Verilog
? ? E.3? ? 如何查看仿真输出
? ? E.4? ? 高级测试平台
? ? E.5? ? 小结
附录F? ? TinyCPU编译和汇编代码的工具
? ? F.1? ? 引言
? ? F.2? ? 汇编过程
? ? F.3? ? 汇编器
? ? F.4? ? 汇编程序实例
? ? F.5? ? 编译器
? ? F.6? ? 小结
索引