第一部分 数字逻辑与有限状态机<br>第1章 数字逻辑基础 3<br>1.1 布尔代数 3<br>1.1.1 基本函数 4<br>1.1.2 布尔函数的使用 5<br>1.2 基本的组合逻辑 9<br>1.3 更复杂的组合元件 11<br>1.3.1 多路选择器 11<br>1.3.2 译码器 13<br>1.3.3 编码器 14<br>1.3.4 比较器 16<br>1.3.5 加法器和减法器 18<br>1.3.6 存储器 20<br>1.4 组合电路设计 21<br>1.4.1 BCD码的7段译码器 22<br>1.4.2 数据排序器 24<br>1.5 基本时序元件 25<br>1.6 更复杂的时序元件 28<br>1.6.1 计数器 28<br>1.6.2 移位寄存器 30<br>1.7 实例:可编程逻辑设备 31<br>1.8 总结 33<br>1.9 习题 34<br>第2章 介绍有限状态机 37<br>2.1 状态图和状态表 38<br>2.2 Mealy机和Moore机 41<br>2.3 设计状态图 41<br>2.3.1 模6计数器 42<br>2.3.2 串检查器 43<br>2.3.3 收费站控制器 44<br>2.4 从状态图到实现 48<br>2.4.1 状态赋值 49<br>2.4.2 Mealy机和Moore机的实现 50<br>2.4.3 产生次态 51<br>2.4.4 产生系统输出 55<br>2.4.5 一种可替代的设计 58<br>2.4.6 八状态串检查器 59<br>2.5 实例:实际考虑 61<br>2.5.1 未使用状态 61<br>2.5.2 异步设计 63<br>2.5.3 状态机转换 66<br>2.6 总结 67<br>2.7 习题 68<br>第二部分 计算机组成与体系结构<br>第3章 指令集结构 75<br>3.1 程序设计语言的级别 76<br>3.1.1 语言种类 76<br>3.1.2 编译和汇编程序 76<br>3.2 汇编语言指令 79<br>3.2.1 指令类型 80<br>3.2.2 数据类型 81<br>3.2.3 寻址方式 82<br>3.2.4 指令格式 84<br>3.3 指令集结构设计 86<br>3.4 相对简单的指令集结构 87<br>3.5 实例:8085微处理器指令集结构 92<br>3.5.1 8085微处理器的寄存器组 92<br>3.5.2 8085微处理器指令集 93<br>3.5.3 一个简单的8085程序 97<br>3.5.4 分析8085指令集结构 98<br>3.6 总结 99<br>3.7 习题 99<br>第4章 介绍计算机组成 102<br>4.1 基本的计算机组成 102<br>4.1.1 系统总线 103<br>4.1.2 指令周期 104<br>4.2 CPU组成 106<br>4.3 存储器子系统组成和接口 107<br>4.3.1 存储器的种类 107<br>4.3.2 芯片内部组成 109<br>4.3.3 存储器子系统配置 110<br>4.3.4 多字节数据组成 114<br>4.3.5 基本功能的拓展 115<br>4.4 I/O子系统组成和接口 115<br>4.5 相对简单计算机 117<br>4.6 实例:一台基于8085的计算机 120<br>4.7 总结 123<br>4.8 习题 124<br>第5章 寄存器传送语言 126<br>5.1 微操作和寄存器传送语言 127<br>5.2 用RTL描述数字系统 132<br>5.2.1 数字元件 132<br>5.2.2 简单系统的描述与实现 133<br>5.3 更复杂的数字系统和RTL 136<br>5.3.1 模6计数器 137<br>5.3.2 收费站控制器 139<br>5.4 实例:VHDL-VHSIC硬件描述语言 143<br>5.4.1 VHDL语法 144<br>5.4.2 高层抽象的VHDL设计 146<br>5.4.3 低层抽象的VHDL设计 149<br>5.5 总结 151<br>5.6 习题 151<br>第6章 CPU设计 154<br>6.1 CPU的设计规范 154<br>6.2 非常简单CPU的设计与实现 155<br>6.2.1 非常简单CPU的设计规范 155<br>6.2.2 从存储器中取指令 156<br>6.2.3 指令译码 157<br>6.2.4 指令执行 158<br>6.2.5 建立所需的数据通路 160<br>6.2.6 非常简单ALU的设计 163<br>6.2.7 用硬连线控制设计控制单元 164<br>6.2.8 设计验证 168<br>6.3 相对简单CPU的设计和实现 169<br>6.3.1 相对简单CPU的规范 169<br>6.3.2 取指令和指令译码 171<br>6.3.3 执行指令 172<br>6.3.4 创建数据通路 176<br>6.3.5 相对简单ALU的设计 179<br>6.3.6 用硬连线控制设计控制单元 181<br>6.3.7 设计验证 183<br>6.4 简单CPU的缺点 183<br>6.4.1 更多的内部寄存器和高速缓存 183<br>6.4.2 CPU内部的多总线 184<br>6.4.3 指令流水线式处理 185<br>6.4.4 更大的指令集 186<br>6.4.5 子程序和中断 187<br>6.5 实例:8085微处理器的内部结构 187<br>6.6 总结 189<br>6.7 习题 189<br>第7章 微序列控制单元设计 194<br>7.1 微序列控制器设计基础 194<br>7.1.1 微序列控制器的操作 194<br>7.1.2 微指令格式 196<br>7.2 非常简单微序列控制器的设计和实现 197<br>7.2.1 基本布局 197<br>7.2.2 生成正确序列并设计映象逻辑 198<br>7.2.3 用水平微代码生成微操作 199<br>7.2.4 用垂直微代码生成微操作 201<br>7.2.5 从微代码直接产生控制信号 205<br>7.3 相对简单微序列控制器的设计和实现 206<br>7.3.1 修改状态图 206<br>7.3.2 设计顺序硬件和微代码 207<br>7.3.3 用水平微代码完成设计 210<br>7.4 减少微指令数 212<br>7.4.1 微子程序 212<br>7.4.2 微代码跳转 215<br>7.5 微程序控制和硬连线控制的比较 216<br>7.5.1 指令集的复杂度 217<br>7.5.2 修改的容易度 217<br>7.5.3 时钟速度 217<br>7.6 实例:一个(大部分是)微代码的CPU:奔腾微处理器 217<br>7.7 总结 219<br>7.8 习题 219<br>第8章 运算方法 222<br>8.1 无符号表示法 223<br>8.1.1 加法和减法 223<br>8.1.2 乘法 226<br>8.1.3 除法 234<br>8.2 带符号表示法 241<br>8.2.1 符号幅值表示法 242<br>8.2.2 符号补码表示法 246<br>8.3 BCD码(binary coded decimal) 246<br>8.3.1 BCD码的格式 247<br>8.3.2 加法和减法 247<br>8.3.3 乘法和除法 251<br>8.4 专用运算部件 252<br>8.4.1 流水线 253<br>8.4.2 查找表 255<br>8.4.3 华莱士树 256<br>8.5 浮点数 259<br>8.5.1 数据格式 260<br>8.5.2 数据性质 260<br>8.5.3 加法和减法 262<br>8.5.4 乘法和除法 265<br>8.6 实例:IEEE 754 浮点标准 267<br>8.6.1 格式 268<br>8.6.2 非规范数 269<br>8.7 总结 269<br>8.8 习题 270<br>第9章 存储器结构 273<br>9.1 存储器的层次结构 273<br>9.2 cache存储器 274<br>9.2.1 相联存储器 274<br>9.2.2 相联映象的cache存储器 276<br>9.2.3 直接映象的cache存储器 278<br>9.2.4 组相联映象的cache存储器 279<br>9.2.5 在cache中替换数据 281<br>9.2.6 写数据到cache 283<br>9.2.7 cache的性能 284<br>9.3 虚拟存储器 287<br>9.3.1 分页 288<br>9.3.2 分段 294<br>9.3.3 存储保护 296<br>9.4 基本cache和虚拟存储器的扩展 297<br>9.4.1 基本cache的扩展 297<br>9.4.2 基本虚拟存储器的扩展 298<br>9.5 实例:Pentium/Windows个人计算机上的内存管理 299<br>9.6 总结 300<br>9.7 习题 300<br>第10章 输入输出结构 305<br>10.1 异步数据传输 305<br>10.1.1 源启动的数据传送 306<br>10.1.2 目的启动的数据传送 307<br>10.1.3 握手 308<br>10.2 可编程I/O 309<br>10.2.1 新指令 313<br>10.2.2 新控制信号 313<br>10.2.3 新状态和RTL代码 313<br>10.2.4 修改CPU硬件以支持新指令 314<br>10.2.5 确保其他指令正常工作 315<br>10.3 中断 315<br>10.3.1 CPU和I/O设备之间的数据传送 315<br>10.3.2 中断类型 317<br>10.3.3 中断处理 317<br>10.3.4 中断硬件和优先级 319<br>10.3.5 CPU内部中断实现 323<br>10.4 直接存储器访问 325<br>10.4.1 将直接存储器访问(DMA)纳入计算机系统 325<br>10.4.2 DMA传输方式 327<br>10.4.3 修改CPU使其与DMA共处 328<br>10.5 I/O处理器 329<br>10.6 串行通信 332<br>10.6.1 串行通信原理 332<br>10.6.2 通用异步收发器(UART) 334<br>10.7 实例:串行通信标准 336<br>10.7.1 RS-232-C标准 336<br>10.7.2 通用串行总线标准 337<br>10.8 总结 338<br>10.9 习题 339<br>第三部分 高级专题<br>第11章 精简指令集计算 345<br>11.1 RISC基本原理 345<br>11.1.1 定长指令 346<br>11.1.2 只有LOAD和STORE的指令访问存储器 346<br>11.1.3 较少的寻址方式 346<br>11.1.4 指令流水线 346<br>11.1.5 大量的寄存器 347<br>11.1.6 硬连线控制单元 347<br>11.1.7 延时载入和分支 347<br>11.1.8 指令的预测执行 347<br>11.1.9 优化编译器 348<br>11.1.10 分离指令和数据流 348<br>11.2 RISC指令集 348<br>11.3 指令流水线和寄存器窗口 350<br>11.3.1 指令流水线 350<br>11.3.2 寄存器窗口和重命名 353<br>11.4 指令流水线冲突 356<br>11.4.1 数据冲突 356<br>11.4.2 分支冲突 359<br>11.5 RISC与CISC的比较 363<br>11.6 实例:Itanium微处理器 363<br>11.7 小结 365<br>11.8 习题 366<br>第12章 介绍并行处理 369<br>12.1 单处理机系统中的并行机制 369<br>12.2 多处理机系统的组织结构 372<br>12.2.1 弗林分类法 372<br>12.2.2 系统拓扑结构 373<br>12.2.3 MIMD系统的体系结构 375<br>12.3 多处理机系统中的通信 378<br>12.3.1 固定连接 379<br>12.3.2 可重构连接 380<br>12.3.3 多级互连网络(MIN)的路由 384<br>12.4 多处理机系统中的存储器管理 388<br>12.4.1 共享存储器 388<br>12.4.2 Cache一致性 390<br>12.5 多处理机操作系统和软件 393<br>12.6 并行算法 394<br>12.6.1 并行冒泡排序 395<br>12.6.2 并行矩阵乘法 396<br>12.7 其他的并行体系结构 399<br>12.7.1 数据流计算 399<br>12.7.2 脉动阵列 403<br>12.7.3 神经网络 406<br>12.8 小结 406<br>12.9 习题 407
展开