前言

前言

随着后PC时代的到来,对计算机专业学生的能力要求不仅是编写应用程序,而且需要具有计算机系统观,能够进行软、硬件协同设计。而学生在学习计算机专业课程时,对计算机系统知识的理解大多存在孤立性、片面性,好比只看到了一节节单独的火车车厢,而没有将这些火车车厢连接起来,形成一辆完整的火车,而只有完整的火车才有它本来的价值。完整的火车是系统能力,即具备能够站在系统的高度考虑和解决应用问题的能力。“计算机系统平台”是一门将这些计算机专业知识进行连接、整合的课程,帮助学生树立计算机系统观,即对计算机系统有一个整体的认识,帮助学生在以后的编程或学习相关应用技术时,能站在计算机系统的高度考虑和解决问题。

本书的目标定位是实现计算机应用型人才的系统能力培养目标,帮助计算机专业的学生对计算机系统建立一个整体认识,具体来说就是理解高级语言(本书以C语言为例)程序是如何编译形成汇编语言,然后生成机器语言并被计算机识别,最终在计算机硬件上是如何执行的。这个过程将计算机专业知识如高级语言(C 语言)、操作系统、指令集架构、微体系结构、数字逻辑电路等串接、汇集在一起。我们希望能够培养学生在计算机系统层面的认知能力、分析能力和解决问题的能力,培养具有系统观的应用型人才。

本书由7章组成。第1章主要介绍电子数字计算机、Intel CPU 的发展历史以及集成电路的制造过程,以一个C语言程序的编译、链接生成机器指令并在模型机上执行过程为例,简要概述了计算机系统的层次结构,解析如何从高级语言到达底层电子器件,让学生对计算机的发展历史和计算机系统有一个基本且完整的认识。第2章主要介绍数字逻辑电路的基础知识,从而为后续章节中分析计算机各大部件奠定基础。主要从数字电路的概念、与布尔代数的关系、布尔代数的基本公式、常用定理和化简等过渡到如何分析与设计简单组合逻辑电路和简单同步时序逻辑电路。第3章主要介绍计算机底层中的各种数据表示、运算与高级语言中各种数据表示、运算的关系。以C 语言为例,首先介绍了原码、反码、补码、定点、浮点等与C语言中定义的类型(如整型、浮点型、无符号数等)的对应关系。让学生明白高级语言中的数据在计算机底层是如何表示和存储的;然后结合C语言中的运算说明计算机底层中的运算是如何实现的;最后介绍了简单定点运算器的组成,其中重点介绍ALU 是如何设计出来的。第4章主要介绍高级语言如何转换为底层的机器语言。首先从Intel最简单的8086微处理器过渡到32位微处理器IA-32,介绍了两款微处理器的指令系统、寄存器组织、常用指令及操作,从而帮助学生读懂简单的IA-32的汇编语言程序;最后介绍了C语言中的主要函数调用语句、选择语句和循环语句转换为对应的汇编指令的过程,让学生清楚地看到高级语言中的常用语句是如何转换为底层的机器级指令的。第5章主要介绍被转换为底层机器级指令的执行过程以及在CPU 中执行的数据通路是怎样的。首先介绍了涉及数据通路的CPU 的组成,包括寄存器、运算器、控制器以及时序系统;然后以一个简单的实例计算机为例,配以时序系统和由4条简单指令构成的指令系统,讨论4条指令在模型机上的微操作序列、数据通路的情况以及控制器的设计。第6章介绍主存储器与CPU 的连接、写入和读出的过程,PC中如何扩展半导体存储器以及高速缓存的结构。重点介绍主存储器与CPU 连接,以及“装入”“存储”机器指令的操作过程。第7章主要介绍了高级语言中输入/输出函数与底层输入/输出指令的对应关系以及最终在计算机底层实现的过程。以一个C语言小程序为例简单介绍了I/O 子系统的概念、作用以及过程,进一步说明查询、中断和DMA 三种方式在底层实现的过程;还介绍了中断方式和DMA 方式的具体硬件实现。

本书是全国高等院校计算机基础教育研究会重点立项教材。参与本书编写的作者有何颖、杨志奇、李春阁、杜璞、何晓菊、董金明。天津大学的张钢教授对本书的编写进行了全程指导。由于计算机技术在不断发展,加之作者水平有限,书中难免存在不妥之处,敬请广大读者批评指正。

编者 何颖

2018年1月于天津大学仁爱学院