计算机硬件技术基础(第2版)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-09-04 23:08:18

点击下载

作者:闫宏印

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

计算机硬件技术基础(第2版)

计算机硬件技术基础(第2版)试读:

前言

计算机科学技术发展得非常快,旧的硬件技术不断被淘汰,而新的硬件技术不断出现,教材也要适应这种变化。本教材在第一版的基础上进行修订,根据计算机硬件技术的最新发展,对一些章节的内容进行了增删;根据第一版教材使用过程中发现的问题和使用教材的老师、同学的意见,对一些章节的内容进行了改写。

软件工程作为计算机学科中的一个重要组成部分,其鲜明的专业特色是以软件开发为主,这就决定了软件工程专业没有更多的时间、也没有必要学习和掌握计算机学科中所有的硬件技术系列课程的内容。但对于软件工程专业的学生来说,学习和掌握计算机硬件的基础知识、了解计算机硬件技术的最新发展,有益于软件的开发和应用,是十分重要和必要的。正是从这一目的出发,我们组织多年从事计算机硬件技术系列课程教学的教师,将多门计算机硬件课程的核心内容融合到一起,编写了本教材。本教材在编写时,充分考虑软件工程及相近专业教学的实际情况和读者自学的需要,力求概念清晰、准确,内容新颖、易教易学;不追求计算机硬件内部的设计细节,而强调实用性和培养学生解决实际问题的能力;从最基本的计算机硬件概念知识讲起,深入浅出,循序渐进,使读者通过本书的学习,可全面、系统地掌握计算机硬件的基础知识。

全书共10章,内容涉及计算机学科硬件核心课程中的数字逻辑、计算机组成与结构、汇编语言程序设计、计算机接口技术等课程的内容,反映了计算机硬件的最新技术,符合软件工程等专业的教学要求。

第1章讲述计算机系统的基本组成和性能指标,使读者对计算机硬件系统有一个清晰的总体认识。第2章介绍计算机运算基础,讲述计算机中的定点数据和浮点数据表示,以及实现各种运算的原理。第3章介绍数字逻辑基础,讲述计算机中常用的组合逻辑电路和时序逻辑电路。第4章以典型CPU为例,讲述CPU的功能结构和工作原理,介绍CPU设计中使用的新技术。第5章以80X86指令系统为背景,讲述计算机的指令系统。第6章介绍汇编语言程序设计基础,讲述汇编语言的程序设计和调试方法。第7章讲述计算机的高速缓存、主存、外存的工作原理和构成层次结构存储系统的方法。第8章介绍计算机总线技术和常用的标准总线。第9章介绍计算机的中断技术和输入/输出接口。第10章介绍计算机的常用外部设备。

本书第1章由郭晓红编写,第2章由张兴忠编写,第3、7、8章由闫宏印编写,第4章由武淑红编写,第5、6章由赵涓涓编写,第9章由廖丽娟编写,第10章由林福平编写,全书由闫宏印策划、修改、统稿。在本书的编写过程中,得到了许多专家和太原理工大学软件学院领导的大力帮助和支持,也得到了电子工业出版社刘瑀老师和多位编辑的大力支持,在此表示衷心的感谢。

由于水平有限,书中难免存在错误和不妥之外,敬请各位读者提出宝贵的意见和建议,我们将不胜感激。编 者第1章 计算机系统概述

计算机的发明是人类在20世纪取得的最重大的科学成就之一。计算机在各行各业的广泛应用,使以前许多无法解决的问题得到解决,使生产效率得到大幅提高,对人类社会的发展起到了巨大的推动作用。本章将首先回顾计算机的发展,然后扼要地讲述计算机系统的组成和工作原理,最后给出计算机的性能指标。1.1 计算机发展概述

计算机从诞生到现在,只有70多年的时间,但计算机技术的发展超过了任何一门科学,极大地改变了人们的学习、工作和生活方式,计算机已成为现代信息社会的基础。1.1.1 计算机的发展历史

几千年以来,在人类的生产劳动和日常生活中,计算一直是一种重要的思维活动。无论是在原始社会,还是在科学技术十分发达的今天,计算都是必不可少的。最初,人类使用小石块、小木棍和手指计算。后来,发展到使用纸和笔、算盘及机械计算机进行计算。在第二次世界大战期间,由于军事上需要大量计算炮弹弹道轨迹,迫切要求一种新的高速计算工具能够完成这项任务。为此,美国集中了许多优秀的科学家,在前人研究的基础上,利用当时已普遍使用的电子管元件,于1946年成功研制出世界上第一台电子数字计算机ENIAC(Electronic Numerical Integrator And Calculator),这台计算机由18000多个电子管和其他电气元件组成,重量超过30吨,占地170多平方米,每小时耗电150多度,是一个庞然大物。尽管它每秒仅能完成5000次加减运算,但和以往的计算工具相比,计算速度提高了成千上万倍,大大加快了弹道轨迹的计算速度,减轻了计算工作人员的负担。更重要的是,第一台计算机的出现,实现了人类计算工具的历史性变革,对人类社会的进步产生了意义深远的影响,也为现代计算机的发展奠定了基础。

计算机技术的发展日新月异,构成计算机的主要功能部件已不再是电子管元件、晶体管元件,而是集成了数以亿计电子元件的超大规模集成电路。计算机的运算速度已从最初的每秒几千次提高到每秒亿亿次,计算机的应用也从最初的科学计算发展到自动控制、数据处理、辅助设计、人工智能等许多领域。特别是20世纪70年代出现的微型计算机,由于其具有体积小、功耗低、使用方便、价格低等优点,使计算机进入了办公室和家庭。而计算机网络的出现,又使计算机的应用有了新的发展,让整个世界进入了信息化时代。

我国计算机的研究与应用开始于20世纪50年代中期。几十年来,我国的计算机事业从无到有、从小到大,从单纯的科学研究到在各行各业得到广泛应用。我国的计算机技术达到了世界先进水平,已经成为世界上少数几个可以设计、制造CPU(Central Processing Unit,中央处理器)和超级计算机的国家。1.1.2 微型计算机的发展

在20世纪70年代初,大规模、超大规模集成电路的出现,使计算机的核心部件——控制器和运算器可以集成到一块称为CPU的微处理器(Microprocessor)芯片上。以CPU为核心,再加上存储器芯片及输入/输出设备,构成了性价比十分优越的微型计算机,对计算机的普及和应用产生了重大影响。随着电子技术的发展,集成电路的规模不断增大,运算速度不断加快,原来在大型计算机上采用的技术开始在微型计算机上使用,使微型计算机的发展十分迅速。当前微型计算机已成为销售额最大的一类计算机,广泛使用的台式计算机、笔记本电脑和平板电脑都属于微型计算机。

美国的Intel公司是世界上主要的微处理器芯片生产厂家,从其生产的CPU可以看出,微型计算机的发展大致经历了以下几个阶段。

第一阶段(1971—1973年):微型计算机的功能还比较简单,采用字长为4位的Intel 4004和字长8位的Intel 8008 微处理器芯片,仅用于家用电器及简单的控制。

第二阶段(1974—1977年):微型计算机的功能得到了提高,采用字长为8位的微处理器芯片,如采用Intel 8080/8085 CPU构成的微型计算机,已开始配置操作系统,可以使用高级语言编程,应用范围逐步扩大。

第三阶段(1978—1984年):微型计算机采用字长为16位的微处理器芯片,如采用Intel 8086/80286 CPU构成的IBM PC/XT和IBM PC/AT微型计算机,功能进一步加强,存储器容量达到1MB以上,软件配置比较丰富,能够处理汉字,开始进入办公室和家庭,又称为个人计算机、桌面计算机或电脑。

第四阶段(1985—1992年):微型计算机采用字长为32位的微处理器芯片,如采用Intel 80386/80486 CPU构成的个人计算机,开始使用高速缓存技术,硬件实现浮点运算,软件配置更加丰富,已经能够实现多用户和多任务作业,其功能超过了以前的小型计算机。

第五阶段(1993—2005年):微型计算机仍采用字长为32位的微处理器芯片,但微处理器芯片内广泛采用流水线、超标量、多级高速缓存、分支预测和指令动态执行等新技术。如采用Intel Pentium系列CPU芯片构成的个人计算机,功能强大、速度快,可以和20世纪80年代初的巨型计算机相比。个人计算机配置的软件也更加丰富,开始广泛使用基于图形界面的Windows操作系统,使用户使用计算机变得非常容易。

第六阶段(2006年至今):微型计算机大多采用字长为64位的微处理器芯片,性能更加优越,普遍采用多核、智能高速缓存和增强的多媒体技术。如Intel Core系列CPU就有双核、四核、六核和八核结构,可在不提高主频的情况下大幅提高运算速度,许多CPU还可将存储控制、图形处理等功能集成到CPU中。1.1.3 计算机的发展趋势

计算机的发展方兴未艾,功能更强、速度更快的超级计算机不断出现,计算机的应用更加深入、广泛,计算机的技术水平已成为衡量一个国家科技水平的重要标志。当前计算机的发展趋势主要表现在以下几个方面。

1.运算速度更快的计算机

为满足用户需求的不断增加,研制运算速度更快的计算机一直是计算机发展的重要目标。我国2013年研制成功的天河二号计算机,运算速度峰值达到5.49亿亿次/秒,持续运算速度达到了3.39亿亿次/秒。2016年研制成功的神威太湖之光计算机,运算速度峰值达到12.5亿亿次/秒,持续运算速度也达到了9.3亿亿次/秒,天河二号计算机和太湖之光计算机,使我国自己研制的计算机连续5年运算速度位于世界第一。2018年,世界上运算速度最快的超级计算机,是美国的Summit超级计算机,其运算速度峰值达到20亿亿次/秒,持续运算速度达到了14.35亿亿次/秒。

随着超大规模集成电路的发展和计算机体系结构的改进,计算机的运算速度将进一步提高,特别是新的计算机体系结构对计算机运算速度的提高影响更大。如在计算机设计中采用并行性技术,将几万甚至几十万块微处理器用专用网络连接到一起作为一台超级计算机使用,获得了极快的运算速度。

2.体积更小的计算机

和超级计算机相比,嵌入式计算机是计算机发展的又一个方向。嵌入式计算机是以应用为中心,以计算机技术为基础,软件/硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式计算机将CPU、存储器和I/O接口等部件集成到一块芯片上,在满足功能要求的前提下,具有很小的体积、重量和功耗,可以嵌入到各种产品中,如汽车、手机、电视、相机、机器人和各种智能仪器及家电产品,使这些产品具有智能。

3.多媒体信息处理功能强大的计算机

计算机从早期单一的计算功能发展到现在具有计算、控制、数据处理、辅助设计、人工智能等多种功能,处理的数据也从简单的数值型数据和字符型数据发展到图形、图像、声音、视频等多媒体数据,今后的发展趋势必将是对多媒体数据的处理功能更将强大。

4.适合网络化应用的计算机

计算机技术和通信技术相结合诞生的计算机网络,使计算机的应用进入“网络计算”时代。计算机网络将世界各地相同的或不同的计算机连接到一起,实现硬件、软件和信息资源的共享,改变了人们的工作、生活和学习方式,还出现了云计算、云存储等一系列新的计算机研究领域。因此,计算机(无论是超级计算机,还是嵌入式计算机)的发展,一定要适应网络的发展,留有网络接口,对计算机连入网络提供强有力的支持。

5.具有人工智能的计算机

人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学,是计算机科学的一个重要分支。让计算机具有人工智能,可以用计算机的软件和硬件模拟人的某些思维过程和智能行为,如推理、学习、思考和规划。具有人工智能的计算机在机器人、图像识别、专家系统等领域得到广泛的应用,人工智能的典型应用案例是Google公司的围棋机器人AlphaGo,它在2017年战胜了世界围棋冠军。

计算机的发展还有许多研究方向,如存储和处理量子信息、运行量子算法的量子计算机,采用光学元件、超导元件、分子元件等构成的新型计算机。1.2 计算机系统的组成和工作原理

对许多人来说,计算机的概念并不陌生,但计算机到底是一种什么样的装置,能够说明白的人就不多了。简单地说,计算机是一种由电子线路组成的、可以完成算术运算和逻辑运算的机器。确切地讲,计算机是一种可编程的功能部件,通常由一个或几个相连的数据处理装置和外围设备组成,在内部存储程序的控制下工作,可完成大量的算术运算和逻辑运算,而在运行过程中,一般无须人工干预。

无论是高性能的超级计算机,还是价格低廉的个人计算机,一个完整的计算机系统都是由硬件和软件两大部分组成的,如图1-1所示。硬件是构成计算机的设备实体,即实际的物理装置,软件是计算机使用的各种程序和数据文件的总称。图1-1 计算机系统的组成1.2.1 计算机的硬件

计算机的硬件主要包括CPU、主存、外存、输入/输出设备、总线和输入/输出接口电路,CPU和主存合在一起称为主机。此外,计算机的硬件还有主板、电源、机箱、风扇等辅助设备。

1.CPU

CPU是中央处理器的简称,是整个计算机系统的核心部件。早期的CPU是由许多分立元件构成的,在现代计算机中,将传统CPU包含的控制器部件、运算器部件、寄存器阵列等部件集成在一块超大规模集成电路芯片上,所以CPU也称为CPU芯片或微处理器芯片。但要注意CPU和微处理器的概念并不完全相同,CPU是可以执行系统程序和用户程序的微处理器芯片,具有较强的功能,在一台个人计算机中一般只有一个CPU,而可以有多个微处理器芯片,微处理器芯片所在部件不同,功能也不同,如在键盘、显卡、打印机和磁盘存储器上都有微处理器芯片。

CPU主要由运算器、控制器和寄存器阵列几大部分组成。运算器是对信息进行加工和处理的部件,其核心是完成算术运算和逻辑运算的部件ALU(Arithmetic Logical Unit)。运算器有两个输入端,可以接收参加运算的操作数,在一组控制信号的控制下,能有选择地完成各种算术或逻辑运算,最后将结果通过输出端送出。

控制器(Control Unit,CU)是计算机的指挥中心,它根据程序中指令的要求,指挥和协调计算机各部件的工作,如运算器的运算操作、存储器的存取操作、外部设备的输入/输出操作,都是在控制器的控制下完成的。简单地讲,控制器的功能就是决定计算机在什么时间根据什么条件做什么事情。控制器的组成比其他部件更复杂,主要有对指令进行分析、解释的部件,产生时序信号的部件,产生操作控制信号的部件。控制器产生的控制信号可以用逻辑电路产生,也可以用微程序的方法产生。

寄存器阵列由一组通用寄存器和专用寄存器组成,这些寄存器也可分别划归为运算器和控制器。通用寄存器用来存放操作数、地址指针和运算结果等数据信息,可以有几十个到几百个。专用寄存器主要有:存放当前执行指令的指令寄存器IR、存放下条指令地址的程序计数器PC、存放CPU工作方式和运算结果状态的程序状态字寄存器PSW(也叫标志寄存器)、存放访问主存单元地址的主存地址寄存器MAR和存放写入或读出主存数据的主存数据寄存器MDR。

随着集成电路技术的进步,在CPU芯片上还集成了浮点运算、高速缓存、图形处理、存储管理等部件,其功能越来越强大。

CPU作为计算机中执行程序的部件,其性能对计算机系统性能的影响最大,具有不同CPU的计算机系统,将具有不同的指令系统,因而也将支持不同的软件系统。目前世界上有几十个公司可以设计和生产CPU芯片,Intel公司在市场上占有的份额最大,影响也最大,其余还有AMD、IBM和ARM等公司。我国于2002年成功研制出CPU芯片,有龙芯、飞腾、申威等系列CPU,实现了历史性的突破。其中,龙芯3B CPU字长64位,具有9级流水线、8核结构,可用来设计通用计算机;申威26010 CPU字长64位,具有260核,被用于神威太湖之光超级计算机中。

2.主存储器

主存储器简称主存,也称内存,是可以被CPU直接访问的一种存储器,用来存放当前运行的程序和数据。主存由一组存储器芯片构成,芯片内主要集成了存储体电路、地址译码电路、读/写电路和控制电路。

存储体电路是主存的核心部件,是信息存储单元的集合体。每个存储单元又由若干基本存储元电路组成,每个基本存储元电路具有两种稳定的状态,可以用来表示二进制数的0和1。由于每个存储体都是由几百万、几千万个存储单元组成的,为了存取方便,每个存储单元都有一个唯一的编号,即存储单元地址,CPU可以按照这个唯一的地址去访问这个存储单元。存储器中的程序和数据都是以二进制数表示的,每个存储单元可以存放一条指令或一个数据(也可能占据几个存储单元),海量存储单元构成的存储器能存放很大的程序和众多的数据就不足为奇了。

地址译码电路的功能是选择要进行读/写操作的存储单元。从CPU送出的地址码经地址总线进入译码器电路,译码器电路的输出可选中存储体中唯一的一个存储单元。地址码的位数和可选择的存储单元的总数之间的关系可以用下式表示:nN=2

式中,n为地址码位数,N为存储单元总数。如20位地址码可寻址的存储单元总数为20N=2=10485762

反过来,要寻址N个存储单元,需要的地址码位数为logN(注意,地址码的位数必须是整数,若计算出来的不是整数,要向上取整)。

读/写电路的功能是根据CPU送来的控制信号,决定对指定存储单元进行读操作还是写操作。若是写入信号,则将数据总线上的数据写入指定存储单元;若是读出信号,则将指定存储单元中的信息取出,送到数据总线。写操作要改变存储单元中原有的信息,读操作不改变存储单元中原有的信息。

控制电路的功能是根据控制总线送来的控制信号,对存储器的各部件进行控制。如启动译码电路和读/写电路、对存储器的内容进行刷新等。

3.外存储器

外存储器(简称外存)也叫辅助存储器,在计算机系统中有输入/输出和存储的双重功能,既是一种外部设备,又是一种存储设备。外存和主存相比,具有容量大、价格低的优点,可用来弥补主存容量的不足,用来存放当前暂时不运行的程序和数据。外存中的信息在断电后不会丢失,能长期、可靠地保存,是计算机系统中重要的存储设备。由于外存的存取速度比主存慢几个数量级,CPU不能直接访问外存存取程序和数据,外存只能和主存直接交换信息。当要运行外存中的程序和数据时,必须先将其调入主存才行。外存储器主要有磁盘、U盘、磁带、光盘等,其中硬磁盘存储器使用最为广泛,是计算机系统的基本外存设备。

4.输入/输出设备

输入设备(Input Device)和输出设备(Output Device)简称I/O设备,是计算机和外界相互联系的桥梁,用来完成信息的输入和输出。如输入设备可将外界的图形、声音、数字、文字和编制的程序输入到计算机里,而输出设备可将计算机内存储和处理过的信息以文字、表格、图形、声音等形式输出。I/O设备的种类很多,涉及的学科非常广,在计算机系统中主要配置的输入/输出设备有显示器、键盘、鼠标、打印机等,此外还有触摸屏、扫描仪、绘图仪、用于声音输入/输出的音频设备、用于图像输入/输出的视频设备等。

5.总线和输入/输出接口

总线和输入/输出接口是计算机系统不可缺少的部分,用来连接计算机系统的各个部件。由于总线和一些输入/输出接口就制作在主板上,所以总线、输入/输出接口和主板有着密不可分的关系。

总线是一组连接计算机多个部件的公共信息传输线,连接在总线上的各个部件可以分时地发送与接收信息。总线除需要一组传输线外,还需要总线控制部件,负责总线的管理。在计算机系统中一般有多组总线,如连接CPU和主存的高速总线,连接一般外设的I/O总线,连接其他计算机系统的通信总线。

输入/输出接口简称I/O接口,是连接主机和外设之间的控制逻辑部件,它具有数据缓冲、数据格式转换、主机和外设之间的通信控制等功能。由于外部设备属于机电设备,在数据传输速率和电气特性上与主机相差很大,难以直接相连。如CPU每秒可以轻而易举地处理几十亿个字符,而键盘每秒只能输入几个字符,要把速度如此悬殊的两个部件连接起来,I/O接口是不可缺少的。

I/O接口的种类很多,在计算机系统中,连接外设的各种卡就是I/O接口。有一些I/O接口已经集成在主板上,如键盘、鼠标、打印机、磁盘的接口都集成在主板的芯片中。还有一些接口可以集成到主板上,也可以是独立的,如显示器使用的显卡、上网使用的网卡、音频设备使用的声卡等。

6.主板及其他硬件

在计算机系统中,除以上完成计算机主要功能的硬件外,还有主板、电源、风扇、机箱等辅助硬件。

计算机的主板是主机箱内的一块电路板,计算机的各部件通过主板相结合,主板的性能对系统的性能有很大影响。主板上留有多个插槽,可以插入CPU、内存条、各种外设接口卡。主板上还留有多组插针和接口,可使主板和电源及一些外设(接口已经集成在主板上的外设)相连。此外,主板上还有一些集成了多种功能的重要芯片,用来产生时钟信号、实现总线控制、存放系统的基本程序和参数等。

电源可将220V或110V的交流电转换成计算机工作需要的多种电压等级的直流电,供主机、磁盘、光驱、风扇等使用。风扇用来降温,以保证CPU、电源、显卡的正常工作,在超级计算机系统中,还采用降温效果更好的水冷系统。1.2.2 计算机的软件

软件是在硬件的基础上,按照一定的算法用程序设计语言设计出来的,是计算机系统不可分割的重要组成部分。软件依照其完成的功能,可分为系统软件和应用软件两大类。

1.程序设计语言

程序设计语言是为编制计算机程序而制定的计算机语言,能实现人和计算机之间的交流,将人的想法传达给计算机。程序设计语言有着明确和严格的语法规则,按照和人类自然语言的接近程度,程序设计语言可分为机器语言、汇编语言、高级语言三大类。(1)机器语言

机器语言是用二进制数表示的计算机语言,一条计算机指令就是机器语言的一个语句。用机器语言编制的程序叫机器语言程序,是计算机能够直接理解和执行的唯一的程序设计语言。机器语言用一组二进制数表示一条机器指令,要求编程人员熟记机器指令的格式和代码,了解计算机内部的结构和工作过程,十分复杂、烦琐,而且编程效率低,极大地限制了机器语言的应用。(2)汇编语言

为了改变机器语言程序编制难、阅读难、调试难的情况,人们开始使用有助于记忆和理解的符号来表示机器指令代码,这种符号称为助记符,可以是字母、数字或其他符号,由助记符组成的语言就是汇编语言。

在汇编语言中,常用有一定意义的单词或缩写表示机器指令的功能,如用ADD、SUB、MUL、DIV分别表示加、减、乘、除指令,MOV表示数据传送指令,IN、OUT表示输入/输出指令,用A、B、C、D或其他字母表示寄存器。由于汇编语言是面向机器的语言,每种机器的汇编语言都和机器语言密切相关,一条用助记符表示的汇编语言指令语句,一般都可以翻译成一条机器指令的二进制代码串;反过来,代表一条机器指令的二进制代码串,总可以用一条汇编语言语句来表示。

汇编语言的主要优点是能够反映CPU的内部结构,充分发挥机器的特性,也保留了机器语言的灵活性。使用汇编语言可以像机器语言一样编制出高质量的程序,而编制效率却高得多,许多系统程序和控制程序都是用汇编语言编制的,特别是系统的核心程序,必须使用汇编语言和机器语言才能编制。(3)高级语言

高级语言是相对机器语言和汇编语言而言的,它是一种与具体机器结构无关、描述解决问题的方式接近人类自然语言和数学语言的程序设计语言。由于高级语言独立于计算机的硬件结构,所以具有很好的通用性和可移植性。在一种机器上编制的程序可以在另一种机器上运行或稍加修改就可以运行,这就避免了有相同功能的软件在不同机器上的重复开发。高级语言的另一个重要优点是接近人类使用的自然语言和数学语言,这使得设计者可以把主要精力放在理解和描述问题上,不必去了解计算机的内部结构和工作过程,也不必记忆太多的规则,因而可以大幅提高编程效率,适合各种类型的软件设计人员使用。

用高级语言编程比较容易,编程效率高,查错修改简单。高级语言的不足之处是不能充分利用计算机的硬件资源,程序执行效率不如机器语言和汇编语言,对某些特殊的问题难以解决。目前世界上使用的高级语言多达几十种,但应用广泛的并不多,常用的有C、C++、Java、Python、C#、Visual Basic.NET等。

2.系统软件

系统软件是一组为专门的计算机系统或同一系列的计算机系统设计的软件,用来管理和控制计算机的运行,提高计算机的工作效率,扩大和发挥计算机的功能,方便用户的使用。系统软件通常由计算机生产厂家或专门的软件公司编制,向用户提供。系统软件主要包括操作系统、语言处理程序、数据库管理系统等。(1)操作系统

操作系统是管理计算机软/硬件资源、提高计算机使用效率、方便用户使用计算机的一组程序。操作系统是计算机最重要的系统软件,是任何一个计算机系统必须配置的。操作系统的性能在很大程度上决定了整个计算机系统工作性能的优劣。一个好的操作系统,可以有效地管理和利用系统所有的软/硬件资源,提高计算机的工作效率,方便用户的操作使用。广泛使用的操作系统有Windows、UNIX、Linux等。(2)汇编程序

用汇编语言编制的程序,机器不能直接执行,要通过翻译变成机器语言程序才行。完成这个工作的系统软件叫汇编程序,当用汇编语言编制的程序输入到计算机后,调用汇编程序可以将其翻译成机器语言程序。在计算机技术中,用字符形式表示的程序称为源程序,用机器指令代码表示的程序称为目标代码程序,目标代码程序经链接定位后就可以执行了。(3)高级语言处理程序

高级语言处理程序是将用高级语言编制的程序翻译成目标代码程序的一组系统软件。不同的高级语言需要不同的语言处理程序,即使同一种高级语言,在不同系列的机器上运行时,也需要不同的语言处理程序。

按照对高级语言源程序翻译成目标代码程序的处理方法不同,语言处理程序可分成编译程序和解释程序两大类。编译程序是针对编译型高级语言的,如C语言,翻译的过程就像翻译一篇文章,全部翻译完后交稿,即给出目标代码程序。经正确编译的目标代码程序链接后以可执行文件的形式存放在磁盘上,随时可以执行。其特点是执行速度快,占用主存少,一经正确编译,就可长久保留,但修改不方便。解释程序是针对解释型高级语言的,如解释型BASIC语言。解释程序就像口头翻译,取一句源程序语句翻译一句、执行一句,发现错误,随时指出,允许用户立即进行修改,解释完源程序后不生成任何目标代码程序。由于解释型高级语言需要解释程序和源程序同时在主存中才行,而且每次执行都要重新解释,所以占用主存空间较大,速度较慢,但人机交互功能强,可修改性好。(4)数据库系统

数据库系统是用来对数据库进行管理的软件。使用数据库系统,用户可以建立、修改、删除数据库,也可以对数据库中的数据进行查询、增加、修改、删除、统计、输出等操作。常用的数据库系统有Oracle、SQL Server、Access、MySQL等。

3.应用软件

应用软件是为解决某个具体问题而设计的软件。应用软件的种类和数量远远多于系统软件。由于要解决的问题的难易程度不同,因此应用软件的大小相差悬殊,从只有几行的一元二次方程求解程序到几十万行的天气预报程序,从小学生辅助教学软件到办公自动化软件,以及工资管理软件、卫星图像处理软件等,都属于应用软件。

为了避免重复劳动,提高生产效率,许多专门领域的应用程序已综合成应用软件包提供给用户使用,如绘图软件包、辅助教学软件包、数学计算软件包、机械零件设计软件包等。

随着计算机应用的深入和普及,新的软件会不断出现。但是必须明白,应用软件是在系统软件的支持下运行的,一般系统软件又是在操作系统的支持下运行的,所有的软件都是在硬件的支持下运行的。1.2.3 计算机的硬件和软件的关系

计算机的硬件是看得见、摸得着的,而软件只有在使用计算机时才能感觉到其存在。对一个完整的计算机系统来说,硬件和软件二者是相互依存、缺一不可的。硬件是计算机的物质基础,没有硬件,计算机就成了无源之水、无本之木。软件是计算机工作的依据,它在硬件的支持下运行,没有软件的计算机就像一堆废品,几乎什么功能也没有,不能解决任何问题。只有软件和硬件相结合,才能使计算机成为“万能”的机器。

软件和硬件之间还存在一个重要的关系,这就是软件和硬件在逻辑功能上等价,即计算机的某个功能既可以由软件完成,又可以由硬件实现。如早期的计算机,乘除法运算和浮点运算都用软件实现,随着集成电路技术的发展,硬件成本大幅下降,现在大部分计算机的乘除法运算和浮点运算都改为由硬件实现。由于软件和硬件在物理上实现某一功能时是不等价的,即在实现的灵活性、速度、成本等方面不同,所以设计一个计算机系统时,要充分考虑软件和硬件的功能分配。不同时期的计算机软/硬件功能分配是不同的,同一时期不同计算机的软/硬件功能分配也是不同的,这主要是由计算机的设计目标和性能价格比决定的。1.2.4 计算机的工作原理

现代计算机设计的核心思想是存储程序,计算机工作的过程就是执行程序的过程。将预先编制好的程序存放到存储器中,在控制器的控制下自动、连续地执行程序中的指令,完成程序所要实现的功能。图1-2所示是计算机的基本结构,可用来说明计算机的工作原理。图1-2 计算机的基本结构

1.编制程序

要想使用计算机解决问题,首先要确定解决问题的算法,即解决问题的步骤和方法。由于解决同一个问题的算法可能有多种,选择一种好的算法是十分重要的。在确定了解题算法之后,还要考虑如何让计算机理解并执行这个算法。计算机程序就是用来描述算法的一种形式,是计算机指令的有序集合,程序设计就是按照算法对指令进行编排,在程序中规定了计算机要完成的任务和完成任务的步骤,也规定了如何取得程序需要的数据和输出结果的方法。

2.存储程序

存储程序是现代计算机最重要的特点之一,这一点使它不同于以往任何一种计算工具。因为其他所有的计算工具的每一步计算过程都需要人工干预,前一步做完才能给出下一步的运算步骤,鉴于人的大脑和手的反应速度的限制,运算速度是很难提高的。

用户使用某种程序设计语言编制好的程序是用字符表示的,需要通过输入设备将其转化成二进制代码存储到存储器中。但这种二进制代码还不能被执行,需要用语言处理程序将其转化成可执行的程序代码并存储在存储器中。

3.计算机自动、连续地执行程序

一旦启动计算机执行程序,计算机就可以依据程序自动、连续地工作。除采用人工对话方式外,完全无须人工干预,直至最终执行完程序,从而保证了计算机的高速运行。

由于程序是由计算机指令组成的,程序的执行可分解成一条条指令的执行,而每一条指令的执行又可分解成取指、分析和执行三个基本步骤。通过分析一条指令的执行过程,就可以简单了解计算机的工作过程。

首先,CPU访问存储器执行取指操作,根据程序计数器指定的地址,从存储器中取出一条指令送到指令寄存器中,同时将程序计数器的内容修改成下一条要执行的指令地址;其次,将指令寄存器中的内容送到指令译码器中进行分析,确定指令的功能和操作数的位置;然后,根据指令的功能,由控制器产生一系列的控制信号控制指令功能的执行。如果是算术运算指令,就控制取操作数送到运算器中运算的操作,并写回结果;如果是访存指令,就控制对存储器的读或写操作。在当前指令执行完后,按照程序计数器中新的内容,再去取下一条指令。

现代计算机的工作过程要复杂得多,由于采用超标量、流水线结构,在某一时刻,CPU中同时执行着多条指令,有的指令处于取指阶段,有的指令处于分析阶段,还有的指令处于执行阶段……各条指令之间的执行关系也变得更复杂,许多计算机允许后执行的指令先执行完,称为指令的动态执行。

在计算机中,指令和数据都是以二进制代码的形式存储在存储器中的,同样一组二进制数,既可以表示指令,又可以表示数据,计算机必须区分。为此,在计算机中设置有时序部件,控制指令操作的顺序。利用指令执行不同阶段的时序信号可以容易地区分指令和数据,当处于取指阶段时,访问存储器取出的是指令,否则取出的是操作数或操作数地址。1.3 计算机的性能指标

性能指标是衡量计算机性能的重要依据,计算机的主要性能指标有基本字长、存储容量、运算速度、系统可靠性、外部设备和软件配置等。1.3.1 基本字长

基本字长是指计算机的CPU一次可以处理的一组二进制数的位数,这组二进制数在计算机中作为一个整体存储、传送和处理。基本字长和计算机内寄存器、运算器和数据总线的位数密切相关,对计算机中数的表示范围、数的运算精度及运算速度都有重要影响。字长越长,表示的操作数位数就越多,因此,能表示的数的范围就越大,运算精度和运算速度也越高。但实现较长的字长时,计算机中的寄存器、运算器和总线也需要较多的硬件,会提高硬件的成本。

当前计算机的字长都采用8的整倍数,主要有8位、16位、32位、64位4种,其他字长的计算机目前已经很少见到。如超级计算机和大型计算机的字长都是64位,广泛使用的个人计算机字长是32位或64位,各种电子设备中的嵌入式计算机字长是8位、16位和32位。在基本字长不能满足应用的需求时,还可利用软件和硬件的逻辑功能等价性,用软件的方法扩展字长,实现双倍字长或多倍字长运算。1.3.2 存储容量

存储容量是指计算机的存储器系统可以存放的二进制数的位数或字节数。位是计算机中表示数据的最小单位,指一位二进制数,它的英文名称为bit,也称为比特,习惯用小写英文字母“b”表示。字节是计算机中衡量存储容量和程序大小、数据多少的最基本的单位,一个字节包含8位二进制数位,其英文名称为byte,习惯用大写英文字母“B”表示。

计算机的存储容量越大,说明计算机的记忆功能越强,存放的程序和数据越多。为了简单起见,在计算机技术中,表示存储容量一般采用以下缩写方式:

计算机的存储器分为高速缓存、主存和外存三类。高速缓存集成在CPU中,容量最小,一般有几十KB到几MB。主存的容量要大一些,个人计算机的主存容量可以有几GB,超级计算机的主存容量可达几百TB,甚至几PB,如曙光5000A超级计算机的主存容量为100TB,天河二号超级计算机的主存容量为1.4PB。嵌入式计算机的主存容量根据需要决定,少的可能只有几KB,多的有几MB。外存的容量要比高速缓存和主存大得多,个人计算机的外存容量可达几TB,超级计算机的外存容量更大,可达PB级,天河二号超级计算机的外存容量就达到了12.4PB。1.3.3 运算速度

运算速度是计算机重要的性能指标,运算速度更快一直是高性能计算机追求的目标。由于不同计算机的结构差异很大,描述计算机运算速度的方法也有多种。

1.平均每秒执行的指令条数

用CPU平均每秒执行的指令条数衡量计算机的运算速度一直是普遍使用的方法,每秒执行100万条指令的计算机,其速度为1MIPS(Million Instruction Per Second),MIPS的值越大,计算机的运算速度越快。个人计算机的运算速度可达几千MIPS,超级计算机的运算速度可达几十亿MIPS。

2.平均每秒执行的浮点运算次数

由于不同的计算机指令系统不同,指令功能的强弱有很大差别,现在多用每秒完成的浮点运算次数衡量计算机的运算速度,如每秒执行100万次浮点运算的计算机,其运算速度为1MFLOPS(Million Floating Point Operation Per Second),超级计算机的速度都是用这一指标衡量的。

3.CPU主频

CPU的主频是体现计算机运算速度的重要指标。CPU主频是指CPU使用的时钟脉冲的频率,其倒数为CPU时钟周期。CPU时钟周期是CPU完成一个或几个微操作需要的时间,若干个时钟周期组成一个指令周期,为一条指令的执行时间。对具有相同系统结构的CPU,主频越高,时钟周期越短,其运算速度也越快,微型计算机常用这一指标衡量运算速度。如具有相同结构的Core i7 CPU,主频为3.2GHz的CPU就比主频为2.66GHz的CPU运算速度快。

4.每条指令平均执行时钟周期数

CPU执行一条指令平均用的时钟周期数用CPI(Cycles Per Instruction)表示,也是衡量计算机运算速度的一个指标。在主频不改变的条件下,CPI越小,说明在单位时间内CPU执行的指令就越多。CPI常被用来计算CPU执行程序的时间,当知道CPI时,根据主频和程序中需要执行的指令条数就可以计算出该程序的执行时间。

CPI的倒数则称为IPC(Instruction Per Cycles),表示CPU每个时钟周期可以执行的指令条数。

5.基准程序测试

衡量计算机运算速度的另一种方法是通过执行一组典型的程序,看其需要多长时间,需要时间越短的计算机运算速度越快。有专门的软件公司编制适合多种需要的基准测试程序,通过运行这些基准程序,可比较具有不同系统结构的计算机的运算速度。1.3.4 系统可靠性

系统可靠性关系到计算机是否有使用价值,一般用平均无故障时间来衡量。平均无故障时间越长,其可靠性越高。在许多应用中,对计算机可靠性的要求非常高,如军用计算机、用于实时控制的计算机,必须在环境恶劣的条件下正常工作,需要针对高温、高寒、振动和各种干扰信号采取相应的措施。

现代电子技术的发展已使计算机的可靠性大大提高,为了进一步提高可靠性,计算机中还采用了纠错技术和容错结构。1.3.5 外设和软件的配置

计算机的外设和软件配置可以从另一个角度反映计算机的性能。外设配置是指计算机配置了哪些外设,配置了什么性能的外设。不同的外设配置对计算机的性能也有很大的影响。对微型计算机来说,基本外设配置是显示器、键盘、鼠标、扬声器、硬盘驱动器,还有一些输入/输出接口电路。由于微型计算机采用总线结构,在主板上留有多个扩展槽,扩充外设配置十分方便,如可增加音箱、打印机、扫描仪、摄像头、光盘驱动器、移动硬盘等装置。对超级计算机系统来说,一般都具有良好的可扩展性,允许配置的外设数量和种类更多,如磁盘阵列存储器、磁带存储器、高性能打印机等。

软件配置是指计算机中安装的软件,可以逐步扩展。首先,计算机应安装功能强大、使用方便、适合硬件的操作系统,还应根据需要安装数据库管理、语言处理、办公自动化等多种软件。否则,有再好的硬件配置也不能充分发挥其效益,也不会被用户欢迎。

最后要指出的是,衡量一台计算机的性能,要对各种性能指标和系统配置综合考虑。选购计算机时,要从实际使用目的出发,在满足应用的前提下,尽量获得最优的性能价格比。习题1

1.单项选择题(1)(  )是专用计算机系统。

A.超级计算机  B.嵌入式计算机  C.台式计算机  D.笔记本电脑(2)计算机可以直接执行的语言是(  )。

A.高级语言  B.汇编语言

C.机器语言  D.机器语言和汇编语言(3)一个完整的计算机系统由(  )组成。

A.软件和硬件  B.主机和外设

C.主存和CPU  D.程序和CPU(4)冯·诺依曼计算机中指令和数据均以二进制数的形式存放在存储器中,CPU区分它们的依据是(  )。

A.指令操作码的译码结果  B.指令和数据的寻址方式

C.指令周期的不同阶段  D.指令和数据所在的存储单元(5)32位地址码可寻址的存储器最大容量是(  )单元。

A.4K  B.4M  C.4G  D.4T(6)寻址256M单元的存储器,需要(  )位地址码。

A.18  B.28  C.29  D.30(7)软件和硬件在(  )是等价的。

A.物理实现上  B.物理实现和逻辑功能上

C.逻辑功能上  D.计算机技术中(8)下列选项中,描述浮点运算速度的指标是(  )。

A.CPI  B.MFLOPS  C.MIPS  D.IPC(9)若CPU在200个时钟周期执行了50条指令,则CPI是(  )。

A.1  B.2  C.3  D.4(10)若CPU主频是2GHz,则CPU的时钟周期是(  )。

A.0.5ns  B.1ns  C.0.5µs  D.1µs

2.计算机的发展趋势有哪些?

3.计算机的软件和硬件分别指什么?计算机的软件和硬件有何关系?

4.举例说明计算机的软件和硬件在逻辑功能上是等价的。

5.衡量计算机的性能指标有哪些?第2章 计算机运算基础

计算机作为处理信息的工具,对信息进行的运算分为算术运算和逻辑运算两大类,算术运算处理的是数值信息,可进行加、减、乘、除、算术移位等运算;逻辑运算处理的是非数值信息,可进行与、或、非、异或、逻辑移位等运算。本章主要讲述数值型数据的编码、表示和运算。2.1 带符号数的编码

由于在计算机中具有两种状态的电子元件只能表示0和1两种数码,这就要求在计算机中表示一个数时,数的符号也要数码化,即用0和1表示。这种在计算机中使用的连同符号一起数码化的数叫机器码,也叫机器数。机器码是为了解决负数在计算机中的表示问题而设计的,机器码的最高位为符号位,一般用0表示正数、1表示负数,数值部分则要按照某种规律编码,根据编码规律的不同,分成原码、反码和补码等机器码。相对于机器码而言,在计算机技术中,用“+”“-”号加上数的绝对值表示的数称为真值。2.1.1 原码

原码是一种非常直观的机器码,当字长为n位时,整数和小数原码表示的定义分别如下。

对整数有

对小数有

从定义可知,正数的原码是其本身,但要用0表示正号;负数的原码是用一个值减去这个负数,即加上这个负数的绝对值。

通过进一步的分析,原码的编码规律可概括为:正数的符号位用0表示,负数的符号位用1表示,数位部分则和真值的数位部分完全一样。

例2-1 已知X=1101,Y=-1011,字长n=5,求X和Y的原码。原原

解:[X]=01101  [Y]=11011

例2-2 已知X=0.1001,Y=-0.1010,字长n=5,求X和Y的原码。原原

解:[X]=0.1001  [Y]=1.1010

原码表示简单直观,与真值转换容易,但符号位不能参加运算。在计算机中用原码实现算术运算时,要取绝对值参加运算,符号位单独处理,这对乘除法运算是很容易实现的,但对加减运算是非常不方便的,如两个异号数相加,实际是要做减法,而两个异号数相减,实际是要做加法。在做减法时,还要判断操作数绝对值的大小,这些都会使运算器的设计变得比较复杂。2.1.2 补码

补码具有符号位可以参加运算和化“减”为“加”的特点,是计算机中使用最多的一种机器码。

1.补码表示的引出

原码加减运算十分复杂,那么,能否找到一种机器码,使得可以化“减”为“加”,运算规则又比较简单呢?答案是肯定的,只要对负数的表示做适当的变换,就可以实现这一目的,补码正是这样一种机器码。

在日常生活中,有许多化“减”为“加”的例子。例如,时钟是逢12进位,12点也可视为0点。当将时针从10点调整到5点时,有以下两种方法:

一种方法是时针逆时针方向拨5格,相当于做减法:10-5=5

另一种方法是时针顺时针方向拨7格,相当于做加法:10+7=12+5=5 (MOD 12)

这是由于时钟以12为模,在这个前提下,当和超过12时,可将12舍去。于是,减5相当于加7。同理,减4可表示成加8,减3可表示成加9。

在数学中,用“同余”概念描述上述关系,即两个整数A、B用同一个正整数M(M称为模)去除而余数相等,则称A、B对M同余,记为A=B (MODM)

具有同余关系的两个数为互补关系,其中一个数称为另一个数的补码。当M=12时,-5和+7,-4和+8,-3和+9就是同余的,它们互为补码。

从同余的概念和上述时钟的例子,不难得出结论:对于某一确定的模,用某数减去小于模的另一个数,总可以用加上“模减去该数绝对值的差”来代替。因此,在有模运算中,减法就可以化为加法。

由于计算机的字长是一定的,表示的数的范围也是一定的,因而属于有模运算。当运算结果超出模时,超出部分会自动舍掉,保留下来的部分仍能正确表示运算结果。为此,可以根据同余的概念引出计算机中补码表示的方法。

2.补码的定义

对模为M的补码,其统一定义为补[X]=M+X (MOD M)n

当字长为n位时,对整数来说,模为2,补码的定义为n补[X]=2+Xnnn-1-1补

当2>X≥0时,模2自动舍掉,[X]=X;当0>X≥-2时,n补[X]=2+X。

对小数来说,模为2,补码的定义为补[X]=2+X补

当1>X≥0时,模2自动舍掉,[X]=X;当0>X≥-1时,[X]补=2+X。

从以上讨论可知,正数的补码是其本身,但要用0表示正号;负数的补码是用模加上这个负数,即减去这个负数的绝对值。

3.负数补码的求法

根据定义求负数的补码要做减法,很不方便。下面以整数为例,推出一种求负数补码的简单方法。nnn10-2-3

设:X=-XX…XX,在MOD 2的条件下,根据补码定义可推导如下:

所以,求一个负数的补码时,可将符号位用1表示,数的各位按位变反,即0变成1,1变成0,然后末位加1。这一方法也适用于小数求负数的补码。

从以上所述可知,补码的编码规律是正数的符号位用0表示,负数的符号位用1表示。但对数位部分则是正数同真值一样,负数要将真值的各位按位变反,末位加1。

例2-3 已知X=1001,Y=-1001,字长n=5,求X和Y的补码。补补

解:[X]=01001  [Y]=10111

例2-4 已知X=0.1010,Y=-0.1011,字长n=5,求X和Y的补码。补补

解:[X]=0.1010  [Y]=1.0101

4.由补码求真值

已知一个数的补码求真值是经常遇到的问题,有必要对其方法进行探讨。下面以小数为例进行讨论。补012n-1

设:[X]=X.XX…X。0补12n-1

若X≥0,则X=0,X=[X]=0.XX…X。0

若X<0,则X=1。补

因为[X]=2+X(MOD 2),所以

综合以上两种情况可知,从正数的补码求真值,不必计算,可以直接写出;从负数的补码求真值,和从真值求负数的补码方法一样,可将补码的各数位按位变反,末位加1,然后加上数符“-”。这一结论对定点整数也同样适用。补补

例2-5 已知[X]=01101,[Y]=10110,求X和Y的真值。

解:X=1101  Y=-1010补补

例2-6 已知[X]=0.1011  [Y]=1.1101,求X和Y的真值。

解:X=0.1011  Y=-0.00112.1.3 反码

反码也是一种常见的机器码,当字长为n位时,整数和小数反码表示的定义如下。

对定点整数有

对定点小数有

从定义可知,对正数的反码和原码表示是一样的,负数的反码则是用一个值加上这个负数,或减去这个负数的绝对值。

通过进一步的分析,反码的编码规律可概括为:正数的符号位用0表示,负数的符号位用1表示,数位部分则是正数同真值一样,负数要将真值的各位按位变反。

例2-7 已知:X=1111,Y=-1010,字长n=5,求X和Y的反码。反反

解:[X]=01111  [Y]=10101

例2-8 已知:X=0.1011,Y=-0.1001,字长n=5,求X和Y的反码。反反

解:[X]=0.1011  [Y]=1.0110

由于负数的反码加1就是负数的补码,所以,反码在计算机中常作为求补码的中介。2.1.4 移码

移码是一种专门用来表示整数的机器码,是在真值上增加一个偏移常量,将所有的数映射到正数域,所以也叫增码。当字长为n位时,移码表示的定义为nnnn-1-1-1-1移移

当2>X≥0时,[X]=2+X;当0>X≥-2时,[X]=2-︱X︱。

进一步分析可发现,移码的编码规律是:正数的符号位用1表示,数位部分同真值一样;负数的符号位用0表示,数位部分变反加1。移码还有一个非常有用的特点,即编码大的移码,对应的真值也大,这个特点可用来比较两个移码表示的数的大小。

由于n-1

当字长为n位时,2就是符号位。可见,移码和补码具有符号位相反、数值位编码相同的关系,利用这一关系,也可以从补码求移码。

例2-9 已知X=1001,Y=-1101,字长n=5,求X和Y的移码。移移

解:[X]=11001  [Y]=000112.1.5 4种机器码的比较

对原码、补码、反码和移码进行比较,可以看出它们之间既有共同点,又有不同之处,为了更好地了解这4种机器码的特点,现总结如下。

①对于正数,原码、补码、反码的表示形式一样;对于负数,原码、补码、反码的表示形式不一样;移码表示和补码表示仅符号位相反,数值位编码完全相同。

②几种机器码的最高位都是符号位,原码、补码、反码用0表示正数、1表示负数,而移码用1表示正数、0表示负数。

③根据定义,原码和反码各有两种0的表示形式,而补码和移码表示0有唯一的形式。如在字长n位的整数表示中,几种机器码的0有如下的表示形式:

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载