第 1 章 计算机系统概论
基本知识点:计算机的发展,计算机组成,计算机硬件中各部件的功能,冯·诺依曼计算机的特点,计算机系统的层次结构,软件与硬件的逻辑等效性,计算机的各种性能指标及其含义。
重 点:计算机系统的层次结构,计算机的各种性能指标及其含义。
难 点:计算机的各种性能指标及其含义。
1.1 知识点 1:计算机的发展和系统结构
1.1.1 要点归纳
1. 计算机的发展
第一台计算机 ENIAC 于 1946 年在美国宾夕法尼亚大学问世,迄今为止经历了 60 多年,其代表人物是英国的科学家图灵和美籍匈牙利科学家冯·诺依曼。从使用器件的角度来说,计算机发展大致经历了 5 代的变化:
☆ 第 1 代计算机(1946~1957 年)——电子管时代。主要特点是采用电子管作为运算和逻辑元件,体积大、成本高、可靠性低,运算速度为每秒几千次至几万次。
☆ 第 2 代计算机(1958~1964 年)——晶体管时代。主要特点是用晶体管代替电子管作为运算和逻辑元件,用磁芯作为主存储器,磁带和磁盘用作外存储器,可靠性提高、体积缩小、成本降低。运算速度为每秒几万次至几十万次。
☆ 第 3 代计算机(1965~1971 年)——中小规模集成电路时代。主要特点是用集成电路代替了分立元件,用半导体存储器取代了磁心存储器,可靠性进一步提高、体积进一步缩小、成本进一步降低。运算速度为每秒几十万次至几百万次。
☆ 第 4 代计算机(1972~1990 年)——超大规模集成电路时代。主要特点是以大规模集成电路(LSI)和超大规模集成电路(VLSI)作为计算机的主要功能部件,可靠性高、体积小、成本更低。运算速度为每秒 1000万次至 1 亿次。
☆ 第 5 代计算机(1991年至今)——巨大规模集成电路时代。主要特点是以巨大规模集成电路作为计算机的主要功能部件,可靠性高、容量大和集成度高。运算速度提高到每秒 10 亿次。
计算机按用途可分为专用计算机和通用计算机。根据计算机的速度、价值等,又将通用计算机分为巨型机、大型机、中型机、小型机、微型机和单片机等,它们的结构规模和性能指标依次递减。当前计算机的主要发展方向主要体现在 5 个方面:巨型化、微型化、网络化、智能化和多媒体化。
计算机的发展与半导体存储器的发展密不可分。1970 年,仙童半导体公司生产出第一个较大容量的半导体存储器,至今半导体存储器经历了 11 代,即单个芯片从 1KB、4KB、16KB、64KB、256KB、1MB、4MB、16MB、64MB、256MB 到现在的 1GB。同存储器芯片一样,处理器芯片的单元密度也在不断增加,每块芯片上的单元个数越来越多,构建一个计算机处理器所需芯片数越来越少。1971 年 Intel 公司开发出第一个微处理器Intel 4004,至今微处理器经历了 Intel 8008(8 位)、Intel 8080(8 位)、Intel 8086(16 位)、Intel 8088(16 位)、Intel 80286(16 位)、Intel80386(32 位)、Intel 80486(32 位)、Pentium(32位)、Pentium Pro(64 位)、PentiumII(64 位)、Pentium III(64 位)、Pentium 4(64 位)等。
2. 计算机的系统结构
1)计算机的系统组成
计算机系统由硬件和软件两部分组成。硬件是指有形的物理设备,是计算机系统中实际物理装置的总称。软件是指在硬件上运行的程序和相关的数据及文档。
硬件是软件的工作基础,软件是硬件功能的扩充和完善。两者相互依存,相互促进。软件与硬件的结合,构成完整的计算机系统。如图 1.1 所示是简单的软硬件层次化结构。
2)冯·诺依曼计算机的特点
计算机的硬件系统是根据冯·诺依曼计算机体系结构的思想设计的,冯·诺依曼提出了“存储程序”的概念(把编好的程序和原始数据事先存入存储器中,然后再启动计算机工作,这就是存储程序的基本含义),它奠定了现代计算机的基本结构,以此概念为基础的各类计算机统称为冯·诺依曼机。其特点如下:
☆ 计算机硬件系统由运算器、存储器、控制器、输入设备、输出设备 5 大部件组成。
☆ 指令和数据以同等地位存放在存储器中,并可按地址寻址。
☆ 采用二进制形式表示指令和数据。
☆ 指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器中的位置。
☆ 指令在存储器中按顺序存放。通常,指令是顺序执行的,在特定条件下,可根据运算结果或根据设定的条件改变执行顺序。
☆ 早期的冯·诺依曼计算机以运算器为中心,输入输出设备与存储器间的数据传送通过运算器完成。
从中看到,冯·诺依曼机使用单一的处理部件来完成计算、存储以及通信的工作;存储单元是定长的线性组织,可以直接寻址;在执行程序和处理数据时必须将程序和数据从外存储器装入主存储器中,然后才能使计算机在工作时自动地从存储器中取出指令并加以执行。
3)计算机的硬件组成
在计算机中,普遍采用如图 1.2 所示典型的冯·诺依曼计算机的结构,其特点是以运算器为中心,在存储器和输入/输出设备之间传送数据时都需要经过运算器。现代计算机已转化为以存储器为中心,如图 1.3所示。这两种方案相比,并无实质性的区别,只是在一些小的方面做了部分改进,使输入/输出操作尽可能绕过 CPU,直接在输入/输出设备和存储器之间完成,以提高系统的整体运行性能。
两个图中各部件的功能如下:
☆ 存储器。用来存放数据和程序。
☆ 运算器。用来完成算术运算和逻辑运算,并将运算的中间结果暂存在运算器内。
☆ 控制器。用来控制、指挥程序和数据的输入、运行以及处理运算结果。把运算器和控制器合在一起称为中央处理器,简称为 CPU。CPU 和存储器合起来称为中央处理机,简称为主机。
☆ 输入设备。用来将人们熟悉的信息形式转换为机器能识别的信息形式,常见的输入设备有键盘、鼠标等。
☆ 输出设备。可将机器运算结果转换为人们熟悉的信息形式,常用的输出设备有显示器和打印机等。
计算机的 5 大部件在控制器的统一指挥下,有条不紊的工作。又将 CPU 和主存储器合起来称为主机,将输入/输出设备称为外部设备。
(1)存储器
半导体存储器称为内存储器(简称主存或内存等),包括存储体、各种逻辑部件及控制电路等。磁盘或光盘称为外存储器,这里介绍的存储器主要是内存储器。存储器一词在不作特别说明时通常指内存储器。
存储体由许多存储单元组成,每个存储单元又包含若干个存储元件,每个存储元件能寄存一位二进制代码“0”或“1”,可见,一个存储单元可存储一串二进制代码,称这串二进制代码为一个存储字,这串二进制代码的位数称为存储字长,可以是 8 位、16 位或 32 位等。每个存储单元都有编号,称为地址。
存储器的工作方式是按存储单元的地址号来实现对存储字各位的存(写入)、取(读出)。这种存取方式称为按地址存取方式,即按地址访问存储器(简称访存)。
为了实现按地址访问,主存中还配置两个寄存器 MAR 和 MDR(有些计算机将 MAR、MDR 集成在 CPU 中):
☆ MAR 是地址寄存器,用来存放欲访问的存储单元的地址,其位数对应存储单元的个数(如 MAR 为 10 位,则有210=1024 个存储单元,记为 1K)。
☆ MDR 是数据寄存器,用来存放从存储体 M 某单元取出的代码或准备往某存储单元存入的代码,其位数与存储字长相等。
(2)运算器
运算器的主要功能是进行加、减、乘、除等算术运算,除此之外,还可以进行逻辑运算。运算器最少包括 3 个寄存器和一个算术逻辑单元 ALU,其中 ACC 为累加器,MQ 为乘商寄存器,X为操作数寄存器。这 3 个寄存器在完成不同运算时,所存放的操作数类别也各不相同。
例如,为了实现两个数相乘运算,将[ACC]看做被乘数,先取出存放在主存 M 号地址单元中的乘数[M]并送入乘商寄存器 MQ,再把被乘数送入 X 寄存器,并将ACC 清“0”,然后[X]和[MQ]相乘,结果(积)的高位保留在 ACC 中,低位保留在 MQ 中,其过程如下:
(3)控制器
控制器是计算机的中枢,由它指挥各部件自动、协调地工作。对于比较复杂的任务,计算机在运算前必须简化成一步一步简单的加、减、乘、除等基本操作来做。每一个基本操作称为一条指令,而完成某一任务的一串指令序列,称为该问题的计算程序。指令由操作码和地址码两部分组成,前者指出指令所进行的操作,后者指出参加运算的数据应从存储器的哪个单元中取出来,或运算结果应该存到哪个单元中去,它们都用二进制代码表示。
控制器的基本任务是按一定的顺序一条接一条地执行指令。首先从存储器读出一条指令放到控制器中,这一过程称为取指过程,通常把取指令的一段时间称为取指周期;接着对该指令进行分析判别,根据指令操作数所在地址以及指令的操作码完成某种操作,这一过程称为执行过程,执行指令的一段时间称为执行周期。因此控制器反复交替地处在取指周期和执行周期之中。
控制器由程序计数器(PC)、指令寄存器(IR)和控制单元(CU)组成。PC 用来放当前欲执行指令的地址,它与主存的 MAR 之间有一条直接通路,且具有自动加 1 的功能即可自动形成下一条指令的地址。IR 用来存放当前的指令,其内容来自主存的 MDR。IR中的操作码(OP(IR))送至 CU,记作OP(IR)→CU,用来分析指令;其地址码(Ad(IR))作为操作数的地址送至存储器的 MAR,记作 Ad(IR)→MAR。CU 用来分析当前指令所需完成的操作,并发出各种微操作命令序列,用以控制所有被控对象。
计算机使用的信息既有指令又有数据,指令和数据都放在内存中,从形式上看它们都是二进制代码,似乎很难区分哪些是指令字,哪些是数据字。然而控制器完全可以区分开,一般来讲,取指周期中从内存读出的信息流是指令流,它流向控制器,而在执行周期中从内存读出的信息流是数据流,它由内存流向运算器。
(4)输入/输出设备
I/O 子系统包括各种 I/O 设备及其相应的接口。每一种 I/O 设备都由 I/O 接口与主机联系,它接收 CU 发出的各种控制命令,并完成相应的操作。例如,键盘(输入设备)由键盘接口电路与主机联系,打印机(输出设备)由打印机接口电路与主机联系。
4)计算机的系统层次结构
现代计算机不是一种简单的电子设备,而是由硬件和软件结合而成的复杂整体。它通常由 5 个不同的层次组成,在每一层上都能够进行程序设计,如图 1.4 所示。
对图 1-4 的说明如下。
☆ 第一层是微程序机器级:微指令由硬件直接执行。如果某一个应用程序直接用微指令来编写,那么可在这一级上运行该应用程序。
☆ 第二层是机器语言级:用微程序解释机器指令。
☆ 第三层是操作系统级:用机器语言程序解释作业控制语句。
☆ 第四层是汇编语言机器级:用汇编程序翻译成机器语言程序。
☆ 第五层是高级语言机器级:用编译程序翻译成汇编语言程序或直接翻译成机器语言。其中,第三层~第五层称为虚拟计算机。所谓虚拟计算机是指这个计算机只对该层的观察者存在,对某一层次的观察者来说,他只能通过该层次的语言来了解和使用计算机,至于下层是如何工作和实现的就不必关心了。简言之,虚拟计算机即是由软件实现的计算机。层次之间关系密切,下层是上层的基础,上层是下层的扩展,但层次的划分不是绝对的。
5)计算机软件的分类
计算机软件通常分为两大类:系统软件和应用软件。
(1)系统软件
系统软件又称为系统程序,主要用来管理整个计算机系统,使系统资源得到合理调度、高效运行,包括以下 4 类:①各种服务性程序,如诊断程序、排错程序等;②语言程序,如汇编程序、编译程序和解释程序等;③操作系统;④数据库管理系统。
汇编程序用于将汇编语言程序转换成机器代码;编译程序用于将高级语言程序转换成机器代码。
操作系统是配置在计算机硬件平台上的第一层软件,它是一组控制和管理计算机系统硬件和软件资源,合理地组织计算机工作流程并为用户提供方便的程序和数据的集合。
数据库管理系统是一种操作和管理数据库的大型软件,用于建立、使用和维护数据库。
(2)应用软件
应用软件又称为应用程序,是用户根据任务需要所编写的各种程序,如科学计算程序、数据处理程序、过程控制程序等。
6)软件与硬件的逻辑等价性
随着大规模集成电路技术的发展和软件硬件化的趋势,计算机系统的软、硬件界限已经变得模糊了。因为任何操作可以由软件来实现,也可以由硬件来实现。任何指令的执行可以由硬件来完成,也可以由软件来完成。对某一机器功能采用硬件还是软件方案,取决于器件价格、速度、可靠性和存储容量等因素。
现在已经可以把许多复杂的、常用的程序制作成固件。所谓固件,即从功能上来说它是软件,但从形态来说是硬件。
1.2 知识点 2:计算机性能指标
1.2.1 要点归纳
1.计算机性能概述
可以从不同的角度对计算机性能给出不同的定义。对于单机用户,最关心的是减少响应时间;对于批处理用户,最关心的是提高计算机的吞吐量。
通常用程序的执行时间来表示计算机的性能,它是程序执行时间的倒数,在一台计算机上执行程序的时间越长,其性能越差,反之性能越优,所以可以通过执行同一程序比较两台计算机的性能,这称为相对性能。说“计算机 X 的速度是计算机 Y 的速度的 n 倍”,
这意味着:
2. 计算机的性能指标
计算机性能通常通过计算机性能指标来衡量,计算机性能指标是指能在一定程度上衡量计算机优劣的技术指标,计算机的优劣是由多项技术指标综合确定的,对于不同用途的计算机,其对不同部件的性能指标要求有所不同。下面介绍一些常用计算机的性能指标。
(1)总的性能指标
通常衡量计算机总体性能的指标有吞吐量和响应时间:
☆ 吞吐量是指系统在单位时间内处理请求的数量。
☆ 响应时间是指系统对请求作出响应的时间,响应时间是 CPU 时间(运行一个程序所花的时间)与等待时间(用于磁盘访问、存储器访问、I/O 操作、操作系统开销等时间)的总和。
(2)计算精度的性能指标
机器字长是指参与运算的数的基本位数,即 CPU 一次能处理数据的位数,它是由加法器、寄存器的位数决定的,所以机器字长一般等于内部寄存器的大小。机器字长越长,数的表示范围越大,精度也越高。
(3)主存的性能指标
主存有速度和容量两个指标。一个主存所能存储的全部信息量称为主存容量。对于字节编址的计算机,用字节数来表示主存容量;对于字编址的计算机,用字数乘以字长来表示主存容量。即:主存容量=存储单元个数×存储字长。
一般来说,内存越大,主机和外设交换数据所需的时间越小,因而运行速度越高。
(4)CPU 的性能指标
CPU 的性能与计算机运行速度密切相关,其主要的指标如下:
☆ 主频,又称为时钟频率,表示在 CPU 内数字脉冲信号振荡的速度,一般以 MHz 或GHz 为单位。很多人认为CPU 的主频就是其运行速度,其实不然,CPU 的主频与CPU实际的运算能力并没有直接关系。主频和实际运算速度存在一定的关系(在同一个系列计算机中,在同样条件下,主频越高,速度越快),但目前还没有一个确定的公式能够定量两者的数值关系,因为 CPU 的运算速度还要看 CPU 的流水线各方面的性能指标(缓存、指令集、CPU 的位数等)。
☆ CPU 时钟周期,是指主频的倒数,是 CPU 中最小的时间元素,每个操作至少需要一个时钟周期。
☆ CPI,是指每条指令执行所用的时钟周期数,由于不同指令的功能不同,造成指令执行时间不同,即指令执行所用的时钟数不同,所以 CPI 应该是一个平均值。
☆ IPC(每个时钟周期执行的指令条数),指 CPU 每一时钟周期内所执行的指令数量,IPC 代表了一款处理器的设计架构,一旦该处理器设计完成之后,IPC 就不会再改变了。这里所说的指令一般是指加、减运算等短指令。
☆ CPU 执行时间,是指运行一个程序所花费的时间,其计算公式如下:
上式表明,CPU的性能取决于三个要素:时钟频率、每条指令执行所用的时钟周期数和程序中的指令条数(IC)。
☆ MIPS,是指每秒执行多少条指令,其定义为:
☆ MFLOPS,是指每秒执行多少次浮点运算,其定义:
(5)其他性能指标
计算机的其他性能指标有总线带宽和 I/O 速度等。
☆ 总线带宽是指总线的数据传输速率,即单位时间内总线上传输数据的位数,通常用每秒传输信息的字节数来衡量。
☆ I/O 速度取决于I/O 总线的设计,这对于慢速设备(例如键盘、打印机)而言关系不大,但对于高速设备则效果十分明显。
3. 计算机性能的几个陷阱
有关计算机性能的几个陷阱如下。
陷阱 1:在对机器的某一方面进行改进后,期望整个系统的性能能够成比例的提高。
Amdahl 定律:计算机系统的改进可能带来的提升受到改进部分所占比例的限制,其描述如下:
改进后程序的执行时间=a/b+c
其中 a 为受改进影响的部分的执行时间,b 为改进部分性能提高的倍数,c 为未受改进影响的部分的执行时间。
例如,假设某个程序在一台计算机上的运行时间为 100 秒,其中 80 秒为执行乘法操作,如果希望该程序的运行速度提高为原来的 5 倍,则乘法部件的速度应该是原来的多少倍呢?
设乘法部件的速度提高 n 倍,则有,改进后程序的执行时间=80 秒/n+(100-80)秒=20秒,则:0=80 秒/n,也就是说,当乘法只是占到总计算量的 80%的话,无论对乘法部件做何种改进,系统的整体性能不可能提高到原来的 5 倍。
陷阱 2:一个程序的执行时间仅与 CPI 有关。
由前面的性能指标可以推出:CPU 执行时间=程序指令数×CPI×时钟周期
所以 CPU 执行时间与 3 个因素有关,即时钟周期、CPI 和程序指令数。此外,这些因素对 CPU 执行时间的影响是相同的,其中任何一个改进 10%,CPU 执行时间就会改进 10%。孤立地改变其中一个参数是很困难的,因为改变各因素的技术是相互关联的:
☆ 时钟周期是由硬件技术和计算机组成决定。
☆ CPI 是由计算机组成和指令集的系统结构决定。
☆ 程序指令数是由指令集的系统结构和编译器决定。
陷阱 3:仅仅使用性能公式的一个子集作为性能指标。
例如,单独使用 MIPS不能作为一台计算机的性能指标。MIPS 是一个描述指令执行速度的性能指标,它与执行时间成反比,机器越快,其 MIPS 值越高,但 MIPS 并没有考虑指令所完成的功能,因为同一程序在不同机器上的指令数可能是不一样的。即使是同一台机器,用不同的程序测出来的 MIPS 值也不一样,即同一台机器不可能对所有程序而言只有同一个 MIPS 值。