1.1 计算机的分类
电子模拟计算机和电子数字计算机
电子计算机从总体上分为,电子模拟计算机和电子数字计算机两类。
电子模拟计算机:“模拟”就是相似的意思。模拟计算机的特点是数值(数据)由连续量,也就是电压来表示,就像计算尺用长度表示数值,时钟用表盘表示数值一样。控制方式是在电压盘上连线(物理式),计算方式为电压组合和测量值,运算过程也是连续的。
电子数字计算机,它是在算盘的基础上发展起来的,是用数字0和1来表示数量的大小(数据)。数字计算机的主要特点是按位(二进制类)运算,并且不连续地(离散地)跳动计算。控制方式是通过程序控制(逻辑式)。
我的理解上是,电子模拟计算机是模拟问题和数据本身,而电子数字计算机是模拟人类的“思维过程”和“逻辑判断”,所以电子数字计算机能够做到更广泛的应用和更长远的发展。从存储量来看,电子模拟计算机的数据用0和1而不是具体的连续量,能够存储的量更大,从精度来看,电子模拟计算机也更加准确,所以我们现在习惯上称的电子计算机,一般是指现在广泛应用的电子数字计算机,又称“电脑”。
专用计算机和通用计算机
数字计算机根据计算机的效率,速度,价格,运行的经济性和适用性划分成专用计算机和通用计算机。
专用计算机,是指专为解决某一特定问题而设计制造的电子计算机,一般拥有固定的存储程序,解决特定问题的速度快,可靠性高,且结构简单,价格便宜,但因为是解决特定问题,它的适用性很差。
通用计算机的适用性很强,但是牺牲了效率,速度和经济性。
通用计算机根据体积、简易性、功率损耗、性能指标、数据存储容量、指令系统规模和机器价格等可以分为:超级计算机,大型机,服务器,PC机,单片机,多核机,区别如下:
超级计算机(Super computer)是指能够执行一般个人电脑无法处理的大量资料与高速运算的电脑。就超级计算机和普通计算机的组成而言,构成组件基本相同,但在性能和规模方面却有差异。
超级计算机主要特点包含两个方面:极大的数据存储容量和极快速的数据处理速度,因此它可以在多种领域进行一些人们或者普通计算机无法进行的工作,但同时结构复杂,价格昂贵。
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上,相当于一个微型的只用一片集成电路做成的计算机。
和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小,结构简单,性能指标较低,价格便宜,为学习,应用和开发提供了便利条件。
介于这两类通用计算机中间的是大型机,服务机,PC机和单片机,他们的结构规模和性能指标依次递减,随着时代的进步,以前完成某个指标的复杂结构在未来可能会变得简单,今天的微型机可能就是明天的单片机。
1.2 计算机的发展简史
1.2.1 计算机的五代变化
世界上第一台电子数字计算机是1946在美国宾夕法尼亚大学制成的,这台机器用了18000多个电子管,占地170m2,重量达30吨,而运算速度只有5000次每秒。
从使用器件的角度来说,计算机的发展大致经历了五代的变化。
第一代为1946—1957年,电子管计算机。计算速度为每秒几千次到几万次,体积庞大成本高但可靠性较低。在这期间,形成了计算机的基本体系和程序设计的基本方法,数据处理机开始得到应用。
要点:数据处理
第二代为1958—1964年,晶体管计算机。计算速度提升到每秒几万次到几十万次,可靠性提高,体积缩小,成本降低,这这期间,工业控制机开始得到应用。
要点:工业控制。
第三代为1965—1971年,中小规模集成电路计算机。可靠性进一步提高,体积进一步缩小,成本进一步下降,运算速度提高到每秒几十万次到几百万次。在这期间,形成机种多样化,生产系列化,使用系统化,小型计算机开始出现。
要点:小型计算机。
第四代为1972—1990年,大规模和超大规模集成电路计算机。运算速度提高到每秒1000万次到1亿次,其余方面比起第三代同样提高,由几片大规模集成电路组成的微型计算机开始出现。
要点:微型计算机。
第五代为1991年开始,巨大规模集成电路计算机。运算速度提高到每秒10亿次,由一片巨大规模集成电路实现的单片计算机开始出现。
要点:单片机。
从1946计算机诞生开始,大约每隔五年运算速度提高10倍,可靠性提高10倍,成本降低为1/10,体积缩小为1/10。20世纪70年代以来,计算机的生成数量每年以25%的速度递增。
1965年摩尔观察到芯片上的晶体管每年翻一番,1970年这种态势减缓成每18个月翻一番,这就是人们所称的摩尔定律。
1.2.2 半导体存储器的发展
20世纪50到60年代,所有计算机存储器都是由微小的铁磁体环(磁芯)做成。每个磁芯的直径约1mm,每种磁化方向分别对应1和0。磁芯存储器的速度非常快,读存储器中的一位只需要1微秒。
但缺点在于价格昂贵体积大,读出是破坏性的,必须有读出后重写数据的电路,并且工艺复杂,甚至需要手工制作。
1970年,仙童半导体公司生产出了第一个较大容量半导体存储器。一个相当于单个磁芯大小的芯片,包含了256位的存储器,读写速度比磁芯快得多,读出一位只需要70纳秒,并且这种芯片是非破坏性的。
但缺点在于价格比磁芯还要贵。
从1970年起,半导体存储器经历了11代:单个芯片1KB,4KB,16KB,64KB,256KB,1MB,4MB,16MB,64MB,256MB,1GB,(1974年后)每位半导体存储器的价格都低于磁芯,这以后存储器的价格快速下跌,存储密度不断增加,更小,更快,存储容量更大,价格更便宜。
1.2.3 微处理器的发展
1971年Intel公司开发出Intel 4004。这是第一个将CPU的所有元件都放入同一块芯片内的产品,于是,微处理器诞生了。
Intel 4004能完成两个4位数的相加和通过重复相加完成乘法,总线宽度为4位。
微处理器演变中的另一个主要进步是1972年出现的Intel 8008,这是第一个8位微处理器,它比4004复杂一倍。
1974年出现了Intel 8080。这是第一个通用微处理器,而4004和8008是为特殊用途而设计的。8080是为通用微机而设计的中央处理器。它与8008一样,都是8位的微处理器,但8080更快,有更丰富的指令系统和更强的寻址能力。
20世纪70年代末才出现强大的通用16位微处理器,8086便是其中之一。
这一发展趋势中的另一阶段是在1981年,贝尔实验室和HP公司开发出了32位单片微处理器。 Intel于1985年推出了32位微处理器Intel 80386,到现在的64位处理器和多核处理器。
1.2.4 计算机的性能指标
看这一章节之前建议先看1.3关于硬件的介绍
主要为吞吐量,响应时间,利用率,处理机字长,总线宽度,存储器容量,存储器带宽,主频,时钟周期,CPU执行时间,CPI,MIPS,FLOPS。
吞吐量:表征一台计算机在某一时间间隔内能够处理的信息量,单位是字节/秒(B/S)。
响应时间:表征从输入有效到系统产生响应之间的时间度量,用时间单位来度量。
利用率:表示在给定的时间间隔内,系统被实际使用的时间所占的比率,一般用百分比表示。
处理机字长:指处理机运算器中一次能够完成二进制数运算的位数。当前处理机的字长有8位,16位,32位,64位。字长越长,表示计算的精度越高。
总线宽度:一般指CPU中运算器与存储器之间进行互连的内部总线二进制位数。
存储器容量:存储器中所有存储单元的总数目,通常用KB、MB、GB、TB来表示。其中K=210,M=220,G=230,T=240,B=8位(1个字节)。存储器容量越大,记忆的二进制数越多。
存储器带宽:存储器的速度指标,单位时间内从存储器读出的二进制数信息量,一般用字节数/秒表示。
主频/时钟周期:CPU的工作节拍受主时钟控制,主时钟不断产生固定频率的时钟(即每秒产生进行若干次计时),主时钟的频率(f)叫CPU的主频。度量单位是MHz(兆赫兹),GHz(吉赫兹)。主频的倒数称为CPU时钟周期(T),T=1/f,度量单位为微秒,纳秒(即将一秒分割成若干份)。
CPU执行时间:表示CPU执行一般程序所占用的CPU时间,可用下面的公式计算:
CPU执行时间=CPU执行一般程序进行的CPU时间周期数*CPU时钟周期。
CPI:表示每条指令周期数,即(执行某段程序的过程中)执行一条指令所需的平均时钟周期数,可用下式计算:
CPI=执行某段程序所需的CPU时钟周期数/程序包含的指令条数。
MIPS:表示平均每秒执行多少(百万条)定点(某种)指令数,可用下式计算:
MIPS =(程序包含的指令数/程序执行时间)(得到每秒钟能够执行多少指令)/106(单位为百万条) (CPU执行时间=CPU执行一般程序进行的CPU时间周期数*CPU时钟周期) =程序包含的指令条数/(程序执行的时钟周期数*CPU时钟周期)/106 (f=1/T) =时钟频率*程序包含的指令条数/CPU时钟周期/106 =时钟频率/(程序包含的指令条数/程序包含的指令条数)/106 =时钟频率/CPI/106。 (CPI=执行某段程序所需的CPU时钟周期数/程序包含的指令条数)
FLOPS:表示每秒执行浮点操作的次数,用来衡量机器浮点操作的性能,可用下式计算:
FLOPS=(程序包含的浮点操作数/程序执行时间)(得到每秒钟能够执行多少浮点操作的次数)。
MFLOPS:等同于MIPS,表示平均每秒执行多少(百万条)定点(某种)浮点操作数,可用下式计算:
MFLOPS=(程序包含的浮点操作数/程序执行时间)(得到每秒钟能够执行多少浮点操作)/106(单位为百万条)
较为重要的例题,联系上述计算机的各个性能指标:
(1):第二步是Nc/f,程序执行时间=程序进行的时钟周期数*CPU时钟周期,CPU时钟周期和CPU的时钟频率互为倒数,程序的指令总数*每条指令的平均CPU时钟周期数=程序进行的时钟周期数(后一种写法每种指令的数量和CPU时钟周期数都明确)。
(2):每条指令的平均CPU时钟周期数(CPI)=程序进行的时钟周期数/程序的指令总数(后一种写法每种指令的数量和CPU时钟周期数都明确)。
(3):就是关于MIP推导的两个公式
(4):每种指令的数量和CPU时钟周期数都明确,程序进行的时钟周期数的计算方式(应该放在第一问)。
1.3 计算机的硬件
1.3.1 硬件组成要素
题目为计算y=ax+b-c的值,假设我们现在有一个算盘,一张带横格的纸和笔,要求将用算盘进行解题的过程步骤用笔详细地记录到带横格的纸上。
解题步骤按照顺序写在前面的部分,数据赋值写在后面。
那么我们这个过程具体用到了哪些东西呢?
用到了带横格且最左编有序号的纸,把数据和解题步骤记录到纸上,即纸“存储”了算题的原始信息;用到了算盘,来进行加减乘除的算术运算;用到了笔,将原始数据,解题步骤记录到纸上,通过纸和笔将结果写出来告诉人;用到了“人”,因为这个过程是在人的控制下进行的。
电子数字计算机进行解题的过程和人用算盘解题的情况类似,也必须有运算工具,解题步骤和原始数据的的存储,输入和输出及整个计算过程的调度控制。打算盘完成各功能的部件对应到电子计算机的部件如下:
控制器:人的大脑的操作控制功能,能够自动控制整个运算过程。
运算器:人的大脑的计算功能
存储器:人的大脑记忆功能(相当于纸那样具有“记忆”功能的部件,从当前计算机功能的角度来看,存储器内的信息不全都是自动生成的,所以更倾向于类比成“纸”的作用)
输入(输出)设备,交互接口:笔和纸
计算机的主要组成结构如下:
1.3.2 运算器
运算器就好像一个由电子线路构成的算盘,是计算机中执行各种算术和逻辑运算操作的部件。运算器的基本操作包括加减乘除四则运算,与或非,异或等逻辑操作,以及移位,比较和传送等操作,亦称算术逻辑运算部件(ALU)。
考虑到电子器件的特性,计算中一般采用二进制数。二进制数只有1和0两个数字,可以分别用电压的高低,脉冲的有无来表示,在电子器件中很容易实现,而且设备也最省。
在运算中,当数的位数越多时,计算的精度就越高;但是位数越多,所需的电子器件也越多,因此计算机的运算器长度一般是8位,16位,32位,64位。
1.3.3 存储器
存储器的功能是保存或“记忆”解题原始数据和解题步骤的部件。
这些原始数据和解题步骤在存储器中都以2进制代码的形式存储,目前采用半导体器件来存储这些大量的0和1,假定一个数要用16位二进制代码来表示,那么就需要16个触发器来保存这16位的代码。
通常,在存储器中把保存一个数的16个触发器称为一个存储单元,存储器有很多个存储单元组成的,每个存储单源都有自己的编号,称为地址。向存储器中存数和取数,都要按给定的地址来寻找所选的存储单元。
存储器所有存储单元的总数称为存储器的存储容量,存储容量越大,表示计算机记忆存储的信息越多。
计算机的存储器可分成内存储器和外存储器。半导体存储器的存储容量有限,因此计算机中又配备了存储容量更大的磁盘存储器和光盘存储器,称为外存储器;相对而言,半导体存储器称为内存储器,简称内存。
内存储器在程序执行期间被计算机频繁地使用,并且在一个指令周期期间是可直接访问的。外存储器要求计算机从一个外贮藏装置例如磁带或磁盘中读取信息。这与学生在课堂上做笔记相类似。如果学生没有看笔记就知道内容,信息就被存储在“内存储器”中。如果学生必须查阅笔记,那么信息就在“外存储器”中。
1.3.4 控制器
控制器是计算机中负责控制计算机各部件有条不紊进行工作的部件。更具体地讲,控制器的任务是从内存中取出解题步骤加以分析,然后执行某种操作。
指令,程序
运算器只能完成加减乘除四则运算及逻辑运算和其他的一些辅助操作,对于一些比较复杂的计算题目,计算机需要在运算前将复杂的计算转化成一步步简单的加减乘除,逻辑运算和其他一些辅助操作的基本操作来做。
每一个基本操作就称为我们前面所说的指令,而解某一问题的一串指令序列,叫做该问题的计算程序,也就是我们前面所说的程序。
一台计算机通常由几十种基本指令,从而构成了该计算机的指令系统,指令系统是硬件设计和软件设计的基础和依据,因此指令系统是衡量计算机性能的一个重要标志。
操作码,地址码
指令部分每条指令明确告诉控制器,从存储器的哪个单元取数并进行何种操作,由此可知指令的内容由两部分组成,即操作的性质和操作的地址,前者称为操作码,后者称为地址码。
操作码指出指令进行的操作,地址码表示参加运算的数据应该从存储器的哪个单元取来,或运算的结果应该存到哪个单元去。两种码都用二进制代码表示,地址码对应地址比较好理解,操作码相当于对 各个基本指令进行了一个二进制的编码。
取指周期,执行周期
计算机进行计算时,指令必须是按一定的顺序一条接一条地进行。控制器的基本任务就是按照指令序列,一条一条取出指令放入控制器中,对该指令的操作码由译码器进行分析和判别,然后根据指令性质执行该指令。
取指令的一段时间叫做取指周期,执行指令的一段时间叫做执行周期,控制器反复交替地处在两个周期之中。
指令流,数据流
根据操作码和指令码,可以将指令和数据一样放入到存储器中,存储器的任何位置既可以存放数据也可以存放指令,不过一般都是和前面计算y=ax+b-c的过程一样在存储器中分开存储。
一个“字节”由8位二进制码组成,而一个“字”则至少由一个以上的字节组成,通常把组成一个字的二进制位数叫做字长。
由于指令和数据都可以用一串二进制代码表示,计算机字既可以代表指令,也可以代表数据,如果某字代表要处理的数据,则称为数据字;如果某字代表一条指令,则称为指令字。
将程序指令存储器和数据存储器合并在一起的存储器结构称为冯诺依曼结构。
那么控制器对于存放在同一个存储器的指令字和数据字是怎么区分的呢?一般来讲,取指周期中从内存读出的信息流是指令流,它流向控制器;而执行周期中从内存读出的信息流是数据流,它由内存流向运算器。
运算器返回数据流给存储器,控制器返回控制流给存储器。
如果指令和数据分别在两个存储器内存放,称为哈佛结构。
与两个存储器相对应的是系统的4条总线:程序和数据的数据总线与地址总线。这种分离的程序总线和数据总线可允许在一个机器周期内同时获得指令字(来自程序存储器)和操作数(来自数据存储器),从而提高了执行速度,提高了数据的吞吐率。
又由于程序和数据存储在两个分开的物理空间中,因此取址和执行能完全重叠。中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。程序指令存储和数据存储分开,可以使指令和数据有不同的数据宽度。
哈佛结构的计算机由CPU、程序存储器和数据存储器组成,程序存储器和数据存储器采用不同的总线,从而提供了较大的存储器带宽,使数据的移动和交换更加方便,尤其提供了较高的数字信号处理性能。
存储程序,程序控制
将解题的程序(指令序列)存放到存储器中称为存储程序,控制器依据存储的程序来控制全机协调地完成任务叫做程序控制。
在计算机系统中,运算器和控制器通常被组合在一个集成电路芯片中,合称为中央处理器,简称处理器,也就是我们一直所说的CPU。
1.3.5 适配器与I/O设备
输入设备:把人们所熟悉的某种信息形式变换为机器内部所能接收和识别的二进制信息形式。
输出设备:把计算机处理的结果变换为人或其他机器设备所能接收和识别的信息形式。
适配器:计算机的输入/输出设备通常称为外围设备,这些设备种类繁多且速度各异,因此它们不是直接与高速工作的主机相连接,而是通过适配器部件相联系,它使得被连接的外围设备通过系统总线与主机进行联系,以便使主机和外围设备并行协调地工作。
适配器就相当于一个为了满足计算机系统特征要求的转换器。
总线:构成计算机系统的骨架,是多个系统部件之间进行数据传送的公共通路。借助系统总线,计算机在各系统部件之间实现传送地址,数据和控制信息的操作。
总之,现代电子计算机是由运算器,存储器,控制器,适配器,总线和输入/输出设备组成的。这也是人们常说的计算机硬件。
1.4 计算机的软件
前面介绍的都是计算机中由元器件构成的有形物件,因而称为硬件或硬设备。
和我们打算盘一样,我们除了需要有算盘,还需要一套制定好运算法则和计算步骤。类比到计算机上,算盘是硬件,运算法则和解题步骤就是软件。计算机软件相对计算机硬件来说是看不见,是计算机系统中不可少的无形部件。
系统程序,应用程序
计算机软件主要分为两大类:系统程序和应用程序。
系统软件:用来简化程序设计,简化使用方法,提高计算机的使用效率,发挥和扩大计算机的功能及用途。它包括以下四类:
1.各种服务性程序,如诊断程序、排错程序、练习程序等 2.语言程序,如汇编程序、编译程序、解释程序等 3.操作系统 4.数据库管理系统
应用软件:用户利用计算机来解决某些问题而编制的程序,如工程设计程序、数据处理程序、自动控制程序、企业管理程序、情报检索程序、科学计算程序等。
软件的发展演变
机器语言
早期的计算机中,人们用机器语言(即机器指令代码,二进制代码)来编写程序,这种方式称为手编程序,因为机器能够完全地直接识别并且执行,所以又叫做目的程序。缺点就是用机器语言直接编写非常的繁琐,不便于普及和使用。
汇编语言,汇编器
后来,人们用一些规定的特殊符号的格式来表示不同的指令,然后再用这些特殊符号编写程序,这就是汇编语言,它是一种能被转化为二进制文件的符号语言。为了机器语言能够认识这些特殊符号,数字,文字,为此人们创造了一种程序,叫汇编器,将符号语言表示的程序(汇编语言程序)翻译成机器语言表示的目的程序。
但是汇编语言和数学语言的差异还是很大,并且不同计算机其指令系统不同,需要先话很多的时间熟悉一台计算机的指令系统,然后再用它的符号语言来编写程序。为了进一步实现程序自动化和便于程序的交流,人们用创造了各种接近于数学语言的算法语言。
算法语言,编译器,链接器,加载器
算法语言比较接近于数学语言,是指按实际需要规定好的一套基本符号及由这套基本符号构成程序的规则。它脱离了具体的机器,更加直观通用。
用算法语言编写的程序称为源程序,对源程序进行翻译和运行的程序和系统并称为编译器。对算法语言,先通过编译器编译为汇编语言程序,然后通过汇编器汇编为机器语言的目标模块,链接器将多个模块与库程序组合在一起以解析所有的应用,最后由加载器将机器代码加入到合适的内存位置便于处理器执行。
操作系统
计算机日益发展,原始的操作和代码编写对于用户太过麻烦(不能做一件事就编一段代码,太耗时耗力),于是需要计算机自己来管理子集合用户,于是人们创造出一类程序叫做操作系统,用来管理计算机的硬件资源和软件资源,同时自动地调度用户的作业程序。
操作系统分为批处理操作系统,分时操作系统,网络操作系统,实时操作系统等多种。
数据库
而为了处理大量的信息,大量的情报检索及各种管理应用,将数据和数据构成的表格按照规律快速有效地组织起来,于是人们又创造出一类程序称为数据库,数据库就是用来实现有组织地,动态地存储和处理大量数据。
数据库和数据库管理软件一起,组成了数据库管理系统。
1.5 计算机系统的层次结构
有前面介绍的内容可知,计算机不能简单地认为是一种电子设备,而是一个十分复杂的硬、软件结合而成的整体。它通常由五个以上不同的级组成,每一级都能进行程序设计,分级情况如下:
第一级是微程序设计级或逻辑电路级。它由机器硬件直接执行微指令。如果某一个应用程序直接用微指令来编写,那么可在这一级上运行应用程序。
第二级是一般机器级,也称为机器语言级,它由微程序解释机器指令系统。这一级也是硬件级。
第三级是操作系统级,它由操作系统程序实现。这些操作系统由机器指令和广义指令组成,广义指令是操作系统定义和解释的软件指令,所以这一级也称为混合级。
第四级是汇编语言级,它给程序人员提供一种符号形式语言,以减少程序编写的复杂性。这一级由汇编程序支持和执行。如果应用程序采用汇编语言编写时,则机器必须要有这一级的功能;如果应用程序不采用汇编语言编写,则这一级可以不要。
第五级是高级语言级,它是面向用户的,为方便用户编写应用程序而设置的。这一级由各种高级语言编译程序支持和执行。
除第一级外,其他各级都得到它下级的支持,同时也受到运行在下面各级上的程序的支持。
随着大规模集成电路技术的发展和软件硬化的趋势,计算机系统的软、硬件界限已经变得模糊了。因为任何操作可以由软件来实现,也可以由硬件来实现;任何指令的执行可以由硬件完成,也可以由软件来完成。
任何操作可以由软件来实现也可以有硬件来实现(设计计算机系统时,应考虑各个方面的因素:价格,速度,可靠性,存储容量,变更周期)。
目前而言,一些计算机逐渐将原本应该由上层进行的操作放到下层进行完成。
总结
了解了计算机的基本概念,硬件软件的概念,衡量指标以及计算的整体框架。
|