基本信息

编辑推荐
《计算机系统:核心概念及软硬件实现(原书第4版)》清晰、详细、一步一步地介绍了计算机组成、汇编语言和计算机体系结构中的核心概念。它带领学生用自上而下的方法探索计算机系统各个抽象层次的方方面面。通过说明不同的抽象层次和其他层次之间的关系,本书帮助学生将计算机系统及其组成部分看作一个统一的概念。《计算机系统:核心概念及软硬件实现(原书第4版)》基于Pep/8汇编器和模拟器,用来讲授经典冯·诺依曼机器的基本知识。Pep/8现在包括新的符号跟踪特性,能够在学生单步跟踪程序时,实时显示全局变量和运行时栈的情况。作者Warford教授从教30余年,他贯穿全书强调了掌握基本计算机概念的重要性,是理解当前和未来技术的基础,他还强调了解决问题能力的重要性。本书覆盖了ACM-IEEE计算机科学课程体系指导意见中体系结构和组成原理中所有的核心概念。
内容简介
作译者
龚奕利,本科毕业于武汉大学,在中国科学院计算技术研究所获得博士学位,曾在美国印第安纳大学从事博士后工作和美国密歇根大学从事访问学者工作,现为武汉大学计算机学院副教授。主要研究方向为高性能计算和分布式系统,包括云计算和广域文件系统。翻译过《深入理解计算机系统》(第一、二版)等计算机专业书籍。
目录
中文版序
译者序
前言
第一部分应用层(第7层)
第1章计算机系统2
1.1 抽象层次2
1.1.1 艺术中的抽象3
1.1.2 文档中的抽象4
1.1.3组织中的抽象5
1.1.4机器中的抽象6
1.1.5计算机系统中的抽象6
1.2 硬件8
1.2.1输入设备9
1.2.2输出设备11
1.2.3主存储器12
1.2.4中央处理单元13
1.3软件13
1.3.1操作系统14
1.3.2软件分析和设计15
译者序
本书的另一个特色是建立了一个虚构的计算机系统Pep/8,借助于这个示例系统,能够让读者/学生更具体地了解计算机系统中的各个组成部分,进而了解核心概念,而不是通过抽象的描述学习抽象的概念;同时又不必拘泥于现实系统的实现细节。本书覆盖广泛,但又重点突出,强调了硬件及其相关软件的实现。本书文字简洁明了,是非常合适的计算机系统入门教材。
与所有计算机书籍的翻译一样,翻译过程中充满了艰难的术语选择,因为我们越来越习惯于在日常技术工作中使用英文术语,有时候使用它的中文翻译反而显得有些陌生和别扭。比如token,中文一般译作“语言符号”,但是实际上它有终结符字符串的含义,如果翻译成中文,很容易失去这些意义。所以我选择保留英文术语,相信不会影响读者阅读或增加阅读难度。
在此感谢王文杰帮助我一起讨论翻译中遇到的问题,还要感谢机械工业出版社华章公司的编辑们给了我很多理解和支持,使得本书得以完成。
在翻译过程中,我尽量做到认真仔细,但还是难以避免出现错误和不尽如人意的地方。在此欢迎广大读者批评指正,我也会把勘误表及时在网上更新,便于大家阅读。
龚奕利
2015年5月于安娜堡
前言
内容摘要
计算机运行在一些抽象层上,在高级抽象层上编程只是一部分。基于图1的层次结构,本书展示了计算机系统的一个统一的概念。
对应于图1的7层,本书也分为7个部分:
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主存中的硬件栈。学生可以用手动方式直接在两层之间翻译,以便更好地理解编译的过程。
序言
During that time computer technology has continued to advance. The natural question for this translation is, Why is Computer Systems still current after these years since its English publication? There are two reasons why it is current and will remain current for many years.
First, Computer Systems is still current because it teaches the fundamentals of computer systems that have been constant for decades. All computer systems consist of software and hardware, and all commercial hardware systems are based on the ubiquitous von Neumann cycle.
On the software side, all high-order languages manipulate data with iterative and recursive algorithms. All languages must be translated to lower level machine language to be executed or interpreted. On the hardware side, all physical machines are combinational and sequential circuits built from logic gates. No matter what the technology, the design principles behind these software and hardware systems do not change.
Second, Computer Systems is still current because it teaches the above design principles with the Pep/8 virtual machine. The Pep/8 machine will always be current because it is not subject to obsolescence, but rather is built to teach the fundamentals of computer systems that do not change. Specifically, it presents a computer system as seven levels of abstraction:
Applications
High-order languages
Assembly
Operating system
Instruction set architecture
Microcode
Logic gate
The book illustrates these levels of abstraction using C++ as the high-order language and Pep/8 assembly language and machine language at the lower levels. The strength of this approach is that the central concepts of computer science are taught without getting entangled in the many irrelevant details that often accompany courses that focus on current technology rather than computing fundamentals. Students who learn the fundamentals are better equipped to master whatever new technology they will encounter in their future computing careers than they would be if they studied only the technology that is current when they are students.
本书第4版完成已经有几年的时间了,这期间计算机技术持续发展。要出版中文版,一个很自然的问题就是:为什么英文版出版多年之后本书的内容仍然没有过时呢?它现在没有过时,今后许多年也不会过时,原因有两点。
首先,本书讲授计算机系统的基础知识,这些基础知识数十年都没有改变过。所有的计算机系统都是由软件和硬件组成的,所有的商用硬件系统都是基于普适的冯·诺依曼周期。
从软件方面来说,所有的高级语言都以迭代或递归算法来处理数据。所有的语言都必须翻译成更低级的机器语言才能执行或解释。从硬件方面来说,所有的物理机器都是由逻辑门构成的组合或时序电路。无论技术如何发展,这些软件和硬件系统背后的设计原理没有改变。
其次,本书以Pep/8虚拟机为例来讲授上述设计原理。Pep/8机器不会过时,因为它不受时间限制,设计它的初衷就是讲授计算机系统中不会变化的基础知识。具体来说,它展现的是计算机系统在7个抽象层次上的样子:
应用层
高级语言层
汇编层
媒体评论
本书是基于Pep/8汇编器和模拟器,它们是设计用来讲授经典冯诺依曼机器的基本知识的。Pep/8现在包括新的符号跟踪特性,能够在学生单步跟踪程序时,实时显示全局变量和运行时栈的情况。
作者Warford教授从教30余年,他贯穿全书强调了掌握基本计算机概念的重要性,是理解当前和未来技术的基础,他还强调了解决问题能力的重要性。本书覆盖了ACM-IEEE计算机科学课程体系指导意见中体系结构和组成原理里所有的核心概念。