**前言**本书清晰、详细、循序渐进地展示了计算机组成、汇编语言和计算机体系结构中的核心思想。本书的很大一部分是建立在一个虚构的计算机Pep/8基础上的,用它来讲解经典的冯·诺依曼机器的基本概念。这种方法的好处是能够讲解计算机科学的核心概念,而又不必拘泥于此类课程中常见的许多不相关的细节。这种方法还能鼓励学生思考计算机科学底层的原理。本书的范围也比较广泛,重点强调了与硬件及其相关软件的处理有关而少有提及的计算机科学主题。内容摘要计算机运行在一些抽象层上,在高级抽象层上编程只是一部分。基于图1的层次结构,本书展示了计算机系统的一个统一的概念。App7层 应用层HOL6层 高级语言层ISA3层 指令集架构层Asmb5层 汇编层OS4层 操作系统层LG1层 逻辑门层Mc2层 微代码层本书主要是按照从上到下、从最高层到最低层的顺序来书写。ISA3层在Asmb5层之前以及LG1层在Mc2层之前讲解是出于教学的目的。在这两种情况下,暂时用相反的从下至上的方法来讲解更自然,有了低层的构造模块就很容易完成上层的构建。App7层 App7层是单独一章,介绍了应用程序。本章展示了抽象层次的概念,建立本书剩下部分的框架。还介绍了一些关系数据库的概念,作为典型计算机应用的例子。同时,还假设学生对文字编辑器或文字处理器有一定的经验。HOL6层 HOL6层也是一章,复习了C++编程语言。本章假设学生具有某种命令语言的经验,不一定是C++,可以是Java或C。书中避免了C++的高级特性,包括面向对象的概念。如果有必要,教师可以把C++例子翻译成其他HOL6层的语言。本章着重介绍了C++内存模型,包括全局变量和局部变量、函数参数以及动态分配的变量。也介绍了递归的问题,因为它依赖于运行时栈上的内存分配机制。还相当详细地解释了函数调用的内存分配过程,因为本书后面还会在较低抽象层次上分析这个机制。ISA3层 ISA3层是指令集架构层,包括两章,描述了一个用于说明计算机概念的虚构的Pep/8计算机。Pep/8是经典的冯·诺依曼机器。CPU包含一个累加器、一个变址寄存器、一个程序计数器、一个栈指针和一个指令寄存器。有8种寻址方式:立即数、直接、间接、栈相对、栈相对间接、变址、栈变址和栈变址间接。在模拟的只读存储器(ROM)中,Pep/8操作系统能从学生的文本文件中装入和执行十六进制格式的程序。学生可以在Pep/8模拟器上运行小程序,学习不会改变内存值的ROM存储指令。学生能学习到位层的信息表示和计算机组成的知识。因为本书的中心主题是层次之间的关系,所以有关Pep/8的章节展示了ASCII表示(ISA3层)和类型为char的C++变量(HOL6层)之间的关系。还展示了补码表示(ISA3层)和类型为int的C++变量(HOL6)之间的关系。Asmb5层 Asmb5层是汇编层,书中介绍了汇编器的概念(汇编器是汇编层和机器层之间的翻译器),还介绍了Asmb5层的符号和符号表。这里是统一的方法派上用场的地方。第5章和第6章中的编译器是高级语言到汇编语言的翻译器。前面,学生学习了一种具体的HOL6层语言C++和一种具体的冯·诺依曼机器Pep/8。接下来的章节将继续介绍层次之间的关系,讲述下面这样一些对应关系:(a)HOL6层的赋值语句和Asmb5层的装入/存储指令;(b)HOL6层的循环和if语句与Asmb5层的分支指令;(c)HOL6层的数组和Asmb5层的变址寻址;(d)HOL6层的过程调用和Asmb5层的运行时栈;(e)HOL6层的函数和过程参数与Asmb5层的栈相对寻址;(f)HOL6层的switch语句和Asmb5层的转移表;(g)HOL6层的指针和Asmb5层的地址。统一方法之美就在于可以在较低层次上实现C++章节中的例子。例如,第2章的递归例子中描述的运行时栈直接对应于Pep/8主存中的硬件栈。学生可以用手动方式直接在两层之间翻译,以便更好地理解编译的过程。这种方法为讨论计算机科学中的核心问题提供了一种很自然的环境。例如,本书介绍了HOL6层的结构化编程,可以和Asmb5层的非结构化编程的可能性进行对比。书中讨论了goto争议、结构化编程/效率之间的折中,给出了两个层次上语言的实际例子。第7章向学生介绍了计算机科学理论。既然学生对如何把高级语言翻译成汇编语言已经有了感性的认识,那么我们就提出所有计算中最基本的问题:什么是能够被自动化的?这里介绍理论是很自然的,因为学生现在知道了编译器(自动化翻译器)必须做什么。他们通过识别C++和Pep/8汇编语言的语言符号来学习语法分析和有限状态机—确定性的和非确定性的。本章包括两种小语言之间的自动翻译器,说明了词法分析、语法分析和代码生成。词法分析器是有限状态机的实现。还有什么比这样更自然的介绍理论的方法呢?OS4层 OS4层讲述操作系统,分为两章。第8章讲述进程管理,包括两节,一节讲装载器,一节讲陷阱处理程序,说明了Pep/8操作系统的概念。有5条指令具有产生软件陷阱的未实现操作码。操作系统把用户正在运行的进程的进程控制块存储在系统栈上,中断服务例程解释该指令。通过具体实现一个挂起进程来强化操作系统中运行和等待进程的经典状态转移图。本章结尾描述了并发进程和死锁。第9章描述存储管理,包括主存和磁盘存储器。LG1层 LG1层用两章来介绍组合电路和时序电路。从布尔代数的定理开始,第10章重点介绍计算机科学的数学基础的重要性,展示布尔代数和逻辑门之间的关系,然后介绍一些常见的SSI和MSI逻辑设备,包括Pep/8 ALU的完整的逻辑设计。第11章通过介绍时序电路的状态转移图,描述有限状态机的基本概念。最后描述常见的计算机子系统,比如双向总线、内存芯片和双端口存储器体。Mc2层 第12章描述Pep/8 CPU的微程序设计控制区,给出了一些示例指令和寻址方式的控制序列,还提供了有关其他指令和寻址方式的大量练习。本章还介绍了装入/存储体系结构的概念,对比了MIPS的RISC机器和Pep/8 CISC机器。最后描述了高速缓存、流水线、动态分支预测和超标量机器,介绍了一些性能问题。
第1章 计算机系统1.1 抽象层次1.2 硬件1.3 软件1.4 数据库系统1.5 总结1.6 练习第2章 C++2.1 变量2.2 控制流2.3 函数2.4 递归2.5 动态内存分配2.6 总结2.7 练习2.8 问题第3章 信息的表示3.1 无符号二进制表示3.2 补码二进制表示3.3 二进制运算3.4 十六进制和符号表示3.5 浮点数表示3.6 跨层的表示方法3.7 总结3.8 练习3.9 问题
相关资源:计算机系统:核心概念及软硬件实现 PDF