前言Foreword 习近平总书记在中国共产党第二十次全国代表大会上的报告中指出: 教育、科技、人才是全面建设社会主义现代化国家的基础性、战略性支撑。必须坚持科技是第一生产力、人才是第一资源、创新是第一动力,深入实施科教兴国战略、人才强国战略、创新驱动发展战略,这三大战略共同服务于创新型国家的建设。报告同时强调: 推动战略性新兴产业融合集群发展,构建新一代信息技术、人工智能、生物技术、新能源、新材料、高端装备、绿色环保等一批新的增长引擎。 随着人工智能成为引领新一轮科技革命和产业变革的核心技术,计算机已经做到了人们期望它做到的一切——甚至更多。计算机在制造、金融、教育、医疗和交通等领域的应用不断落地,极大地改变了现有的生产和生活方式。计算机是几乎所有现代技术的核心。计算机组成原理对于理解计算机如何运作至关重要,本书探讨了计算机系统的基本组成部分和组织结构,为读者提供了坚实的基础,以理解计算机如何用于模拟或实现人类学习行为,获取新知识或技能,重新组织现有知识结构以不断提高其性能,并最终实现智能。任何对计算机及其相关领域感兴趣的人,计算机组成原理都是必不可少的,它是计算机技术的核心,是计算机运行的根本。 由于计算机本身对计算的发展产生了巨大影响,因此在计算的课程体系中大多包含一门有关计算机如何工作的课程,如“计算机组成原理与系统结构”。大学中的计算机科学或计算机工程方向的培养方案中都会有这样一门课程。实际上,专业和课程的认证机构都将计算机体系结构作为一项核心要求。比如,计算机体系结构就是IEEE计算机协会和ACM联合发布的计算学科课程体系的中心内容。介绍计算机如何工作与实现的课程有很多名称。有人将它称作硬件课,也有人将它称作计算机体系结构,还有人将它称作计算机组成原理,以及它们之间的各种组合。 “计算机组成原理”的教材有很多,不过作为一门计算机类的专业基础课程,多数教材没有区分不同层次、不同专业的学生。“计算机组成原理”的课程会在3个不同的系讲授: 电子工程系(EE)、电子与计算机工程系(ECE)、计算机科学系(CS)。这些系有自己的文化,也会从各自的角度看待计算机体系结构。电子工程系和电子与计算机工程系会关注电子学以及计算机的每个部件是如何工作的。面向这两个系的教材会将重点放在门电路、接口、信号和计算机组成上。而计算机科学系的学生大多没有足够的电子学知识背景,因此很难对那些强调电路设计的教材感兴趣。实际上,计算机科学系更强调底层的处理器体系结构与高层的计算机科学抽象之间的关系。 “计算机组成原理”是计算机专业的核心课程,但往往它很难被学生接受。这源于学生对这门课程的迷茫。这门课程学的是修计算机吗?组成原理有什么用?系统结构与什么岗位技能相关?很多人会有这样的疑惑。很多时候,学生无法学好一门课程,难度并非来源于课程知识本身,而是因为学生不了解相关知识的用途和应用场所。 通常,学生学习编程类课程的目标是很明确的。学生明白,学习这门课程就是学习如何编写程序,并且有所见即所得的效果。而学习“计算机组成原理”时,学生会很迷茫,计算机组成原理的知识对我们有什么用呢?清楚地解答这一问题,也是本书写作的初衷。很多想法源于在重庆工程学院讲授“计算机组成原理”课程的经历。编者在讲这门课程时总是期望能够更多地阐述这些知识的应用场景,让学生能清楚地认识到学什么、为什么学,以及学了有什么用。本书还加入了虚拟实验,通过编程完成虚拟实验,让学生直观地理解概念、明确应用场景。本书会形象地让学生“看到”概念,并让他们从实验中获得成就感,激发学习动力。此外,本书也讲述了许多有趣的道理。比如“少即是多”,因为80%的时间都是在使用20%的简单指令;又比如代码要少些循环和判断,是出于分支预测和多级流水线的原因。 ◆计算机组成原理(微课版)前言尽管要写出一本能够同时满足电子工程系、电子与计算机工程系和计算机科学系的教材几乎是不可能的,但本书进行了有效的折中,它为电子工程系和电子与计算机工程系学生提供了足够的门级和部件级的知识,而这些内容也没有高深到使计算机科学系的学生望而却步的程度。由于本书覆盖了计算机组成原理的基础内容、核心知识以及高级主题,内容丰富,篇幅很大,所以它适合与“计算机组成原理”相关的不同课程裁剪使用。综合考虑国内高校计算机组成与结构系列课程的教学目标和课程设置,本书针对应用型本科院校学生的特点,以学以致用的思想为主线,按照循序渐进、逐步深入、重在实践的原则,加入大量仿真实验以帮助学生体会计算机知识的魅力。希望学生能以自上而下的方式看到代码如何被计算机执行,也能自下而上地从门电路开始搭建一台计算机。 全书共9章,主要内容如下。 第1章介绍计算机的发展、计算机的硬件组成、计算机软件、计算机系统的层次结构,并在实训部分介绍了基于Python的仿真实验开发环境。 第2章介绍布尔代数与逻辑电路,主要内容包括布尔代数基本逻辑运算、逻辑函数及其简化,以及硬件电路如何实现逻辑运算,并在最后进行门电路仿真实验,使学生对计算机部件的逻辑结构形成初步概念,为学生理解计算机中的数据奠定基础。 第3章介绍数据表示,主要内容包括进位记数制、进制转换、十进制数据编码、ASCII编码、中文编码、数据信息的校检,并在最后进行偶校验码生成仿真实验,使学生全面了解计算机中的数据表示,并掌握主要的信息编码。 第4章介绍运算器,主要内容包括机器数与真值、机器数编码、定点数加减法、全加器与加法装置、定点数乘法,并在最后进行全加器仿真实验,使学生掌握运算器的运算方法。 第5章介绍存储系统,主要内容包括存储系统概述、主存储器、半导体存储器的容量扩展、高速缓冲存储器、虚拟存储器、辅助存储器,并在最后进行Cache仿真实验,使学生了解存储器的基本工作原理、各类存储器的特性及使用。 第6章介绍指令系统,主要内容包括指令的组成、寻址方式、指令的格式设计、复杂指令集和精简指令集,并在最后进行指令寻址仿真实验,使学生对计算机指令和寻址有所了解。 第7章介绍中央处理器,包括CPU的功能和组成、指令周期、时序产生器和控制方式、流水CPU和RISC CPU。 第8章介绍输入输出系统,主要内容包括I/O接口的功能和基本结构、I/O方式(程序查询方式、程序中断方式、DMA方式、通道方式),重点介绍程序中断方式,并且介绍总线的基本概念、总线分类、总线仲裁和操作,使学生对计算机输入输出系统的基本概念、数据传送方式及总线有全面了解。 第9章介绍TDCMA实验箱实验,主要内容包括通过TDCMA实验箱进行运算器实验、静态随机存储器实验和系统总线接口实验。通过这几个实验,使学生加深对计算机核心部件的理解。 本书主要由朱世宇、孙令翠、王慧英、万川梅、包海宾、章蕊编写。参加编写、校对工作的还有张峤、张海涛、雷仕英、曹玉强、余玉清、卢政旭,他们帮助增添或改进了书中内容并提供了有价值的反馈,编者在此表示感谢。特别是张海涛,为本书做了大量的工作,对改进本书提供了宝贵意见。 限于编者水平,书中疏漏之处在所难免,敬请读者指正。 编者2023年1月