有机械式的,有模拟电子计算机,有数字电子计算机。那么我们这一门课主要是围绕着数字电子计算机而展开的。那么关于计算机,我们将在这一门课的始终来贯穿着它。组成的英文是organisation,你也可以把它翻译成组织。那么在市面上,比如说计算机组织和计算机组成,我们可以把它看成是同一种类型的教科书。我们要学习的是计算机硬件系统的逻辑实现,注意是逻辑实现而不是物理实现。逻辑实现意思是说我告诉你我要做什么,而物理实现呢是说我要用具体的这种元器件把它能做出来。那么我们所使用的呢就是数字电路的知识,数字逻辑的知识。门电路、触发器等等这些数字电子的元器件来实现计算机的硬件系统,所以我们这一门课呢是计算机计算机这一门学科的一门硬件的基础课。那么有一些硬件知识,比如像数字电路啊,数字逻辑。我们要学习的是计算机组成的它的一个公共的原理,而不是说我们某一台具体的机型它是如何构造的,因为我们学习的是公共的原理。
我们把基本部件、基本运算都已经掌握清楚了,我们就要考虑如何把这些部件全部都连接起来,形成一个能够协调运行的一个计算系统,这就是我们这一门课主要的内容。我们这一门课学习的都是计算机组成的一些最基础的一些公共的原理,就是说计算机是如何进行工作的,计算机它的部件是如何组织的,计算机它怎么进行运算的,就是这一些内容。
进入第一节的学习,就是计算机系统的简介。
找到我们的传感器,我们可以把传感器也看成一种计算机,还有我们的笔记本电脑,还有我们的客户端,或者说我们的个人电脑,最后还有这种大的服务器,高性能的计算机,物联网,物理信息系统,甚至我们有的科学家提出智慧地球像这样的大型的计算机,有大有小,各种各样,纷繁复杂。它们的基本结构是怎么样的?它们不管是怎样的计算机,它们的基本结构我们对它进行一种高层次的抽象,也就是说我们把它的具体特征来忽略掉之后,它们都有着一些共性的特征。
我们的系统软件有哪几种常见的形式?首先第一个就是我们的这个语言处理程序。那么语言处理程序呢我们大家都编写过这样的高级语言的程序,像高级语言程序想要在计算机上执行的话,那么必须要有编译程序的支持。我们编写的这样的高级语言的程序如果我们想在计算机上去运行它去执行它的话,那么就必须有编译程序的支持。我们必须通过编译、链接以后生成目标程序,那么这个目标程序才能够在计算机系统的硬件上去执行,所以语言处理程序是一种系统软件。那么系统软件当中大家最熟悉的应该是操作系统。操作系统是用来管理计算机系统的软硬件资源的,它提供了人机交互,指的多个用户、多个程序能够协调地在一台计算机上执行,然后使用计算机系统的软硬件资源,所以操作系统是最著名的系统软件。我们数据库管理系统,大家应该也都很熟悉,我们如果想要运用数据库,编写数据库应用程序的话,必须要有数据库管理系统的支持。最后一个呢就是网络软件,网络软件比如你来听我上这门课的话,就必须要有网络软件的支持,所以这四种是常见的系统软件。那么应用软件呢就更加的丰富多彩了,它是面向某一个特定的任务、面向某一个特定的目标而编写的这样的程序。好的那么我们第一节计算机系统的简介就为大家讲到这里,我们来复习一下。
因为还有一个客观的条件,就是我们的科技在不断地向前发展,我们的电子技术和我们的计算机体系结构的技术在不断地向前发展,所以也推动着我们的计算机在不断向前发展,从而能够满足我们的需求。
那么这就是我们的计算机硬件发展的一个框图。在这里我们看到它的发展的历程主要是以逻辑元件的发展历程来划分的。那么什么是逻辑元件呢?我们看这样的一个CPU,我们把这个CPU剖开,可以看到它的内部构造,是由很多长得很像的单元在不断地排列组合而构成的。那这样的小的单元呢,我们就把它叫做逻辑元件,而逻辑元件本身的大小呢就决定了我们整个系统的大小。如果逻辑元件越大的话它就会越大,而逻辑元件越小的话这个整个系统就会越小。那么我们就以逻辑元件的发展来看整个计算机硬件的发展,那么这个逻辑元件的意思呢这个逻辑的意思和我们上一讲讲到的这个逻辑实现是一样的意思,就是说我们只规定了计算机它的功能是什么,它要为我做什么,而没有说我们要用什么样的方式来实现这个机器。我们可以用电子管来实现,我们也可以用晶体管来实现,只要能够满足我们的需求即可。
什么决定了系统的大小呢?就是说我们的逻辑元件的大小就决定了我们的计算机系统的大小。真空管也就是电子管,可以看到如果某一个电子管发生了故障的话,那么是非常难找到这样哪里发生了故障,因为要从这一万多根晶体管中找到哪一个出故障是非常麻烦的一件事情。ENIAC使用的呢是机器语言来编写程序的,那么什么是机器语言呢?也就是我们计算机能够直接理解的这样的电信号,也就是0101这样的电信号。它的操作是非常繁琐的,我们可以看到图中由技术工人来进行手工地操纵的。
这时候呢称为晶体管时代,这时候我们就由晶体管来代替了真空管。晶体管是这样的,由于晶体管是非常小的,那么第二代计算机就变得,它的占地面积就变小了,并且这时候还出现了面向过程的程序设计语言。那么什么是面向过程呢,面向过程就符合我们人去解决问题的一个习惯,它更偏向于解决问题而不是说我们如何一步一步去实现的。这时候也出现了由机器自动管理这样底层硬件的思想,也就是有了我们的操作系统的雏形。
第三代计算机就是我们的中小规模集成电路。中小规模集成电路,也就是说这样的内存材料,想变得更小,就变成了这个样子。像单片机就是一个中小规模的集成电路,这时候呢高级语言有了迅速的发展,也开始有了分时的操作系统。
那么随着我们电子技术的发展,到现在呢我们出现了大规模、超大规模的集成电路,也就是说我们的一块芯片上,可以容纳更多个晶体管。这时候呢也出现了新的概念,比如像微处理器这样的一个概念。那么什么是微处理器呢?微处理器就是说我们的集成电路的技术,把计算机的控制单元和算逻运算单元集成到一个芯片上,形成了这样的一个微处理器的芯片。这时候也产生了一些新的概念,比如像并行、流水线、高速缓存、虚拟存储器这样的概念,那么这样的概念也是我们在后面的几个章节当中将要详细讲述的重点。所以我们计算机硬件的发展就是这样的一个历程,我们要注意的呢就是我们每一代计算机它的特点,以及它的一些典型的这样的计算机。这就足以应付我们的选择题了。
机器语言就是我们的二进制代码,像这样的01序列,就是我们的二进制代码。它是能够被计算机的硬件直接执行的,能够被计算机的硬件直接读懂的。但是呢这样的硬件有一个什么样的坏处就是说它很长,并且很复杂,也很难记忆,很难使用。那么好处是什么呢?好处就是说我们可以直接对硬件机器用这个二进制代码进行编程。编写完的程序呢也能够在实际的机器实际的硬件上直接执行,但是就是说这样的代码很难记忆,很难使用,并且很容易发生错误。如果一旦发生错误也很难找到哪里发生了错误,因为它都是这样的01序列,是非常抽象的。这时候呢为了能够让人读懂,能够让人记忆,所以呢我们就利用汇编语言进行编程,也就是将我们的计算机的机器语言进行符号化,不直接使用这样的01序列了。我们把这样的01序列对应的把它对应成一个助记符,就比如我们可以用LOAD这样的一个助记符来表示0000这样的一个代码。就比如说我们想要表示16号单元的数据和17号单元的数据相加重回17号单元,我们就不需要写一长串的这样的01序列,我们直接就是LOAD A,16。把16号的单元的数据先放到A里面,然后把17号的单元数据放到B里面,然后把A、B和,A、B进行相加,用ADD,ADD就表示相加嘛,把A、B进行相加然后放到C里面,最后再把C重回到17号单元,这样是非常容能够读懂的。并且每一个这样的汇编语言和机器语言都是一一对应的,基本上是一一对应的。那么汇编语言是不能够被计算机直接执行也不能够被计算机直接读懂的,我们需要用汇编程序也就是汇编器把汇编语言转化成机器语言,然后在计算机的硬件上进行执行。但是显然汇编语言也是非常复杂的,它是一条一条的,它的一条机器语言对应一条汇编语言,编写起程序还是很复杂的,那么和人类的自然语言呢也是有着很大的差距的。于是人们就提出了用这个高级语言进行编程,也就像我们现在使用的C、C++、Java,像这样的高级语言就能够和人类的自然语言差不多的,也就是人能够非常容易地使用。就好像a+b赋值给c,像这样是非常能够理解的,那么这时候高级语言是能够被大家容易地使用的。但是高级语言是不能够在计算机的硬件上直接的跑的,不能直接被计算机的硬件所读懂的。那么它想要在计算机的硬件上进行使用,有两种方式。第一种方式呢是先把它变成汇编语言,然后再把汇编语言变成机器语言,然后机器就能够直接执行了。那么这时候就要用编译程序也就是我们的编译器,把高级语言变成汇编语言,然后再由汇编程序把汇编语言变成机器语言来执行。那么第二种方法呢是直接把高级语言变成机器语言,
也就是用这样的解释程序把高级语言直接变成机器语言然后进行执行。那么就是这就是我们的计算机的编程语言的一个发展的情况。
那么我们刚才讲到的有一个东西叫做微处理器,微处理器呢就是说我们用集成电路的基础把计算机的控制单元和算逻运算单元呢集成到一个芯片上,像这样的芯片呢就叫做微处理器芯片。那么我们的微处理器也是在不断地向前发展着的,那么我们可以看到这张表格当中微处理器有什么不同呢?首先它的晶体管的数目是不同的,是在不断地变大的。那么最重要的是什么呢?是它的机器字长在不断地变大。那么什么是机器字长呢?机器字长就是计算机一次整数运算所能够处理的二进制的位数那么就叫做机器字长。那么为什么我们要强调一次,那么机器字长是能够影响计算机的运算速度的。这个问题呢我们将在第五节也就是我们的最后一节——计算机的性能指标进行讲解。现在我们简单地来给大家留下这样的一个印象,就是说我们假如我们现在有两个十六位的二进制数要进行加法,如果计算机一次能够处理十六位数,那么我们只要进行一次加法就能够得到我们的结果。但如果我们的机器字长是八位,也就是说我们一次整数运算只能处理八个二进制的位数,那么我们要处理十六位的二进制的加法的话,我们就要进行两次运算。先把高八位进行运算,然后再把低八位进行运算,或者我们先把低八位进行运算再把高八位进行运算。也就是说我们要把这个十六位变成两个八位,然后相应的八位进行加法运算。这时候我们可以看到,有的一次就能够得到我们的结果了,有的两次才能得到我们的结果,甚至要比花费两次的时间更长,所以说我们的机器字长是能够影响我们计算机的处理的速度的。那么我们计算机也就是我们的微型计算机的发展,就是以我们的微处理器的发展,它的这样技术的进步为发展的一个标志的。好,这就是我们的微处理器的发展。
也就是说如果我现在买一个CPU,和我18个月以后买一个CPU的话,那么后者的性能将是我们现在买的两倍,啊,就是这个样子。那么它可以说明我们的信息技术是不断地向前发展的,并且它的速度是增长的飞快的,是一个指数级别的增长。同时,不仅,集成电路的晶体管的数目在不断地增加,
我们的半导体存储器的容量也在不断地增加。在1970年,仙童公司生产出了第一个较大容量的半导体存储器,那当时呢是有1KB的。那么随着我们技术的发展,我们的半导体存储器的容量也在不断地增加,从1KB到4KB到1MB,也到现在的1GB,并且它的这个容量还在不断地增加着。也就是从我们的硬件,我们的微处理器,我们的这个晶体管数目,我们的这个存储器的容量,它们都在随着时间不断地向前发展。也就是说我们的现在的计算机的硬件技术是在不断地向前发展着的,我们的这样一个速度是增长的飞快的。
我们在绪论的时候就已经讲过了,我们这门课的主旨呢我们这一课我们这门课的重点是围绕着电子数字计算机而讲述的。那么什么是模拟什么是数字?学过这个电子的同学们应该有一点的印象就是说模拟是说这个数值是连续的,而这个数字是说这个数值是离散的,是不是连续的。模拟计算机的特点就是说我们的所有的数值都是用连续的量来表示的,运算过程呢也是连续的。那么数字呢就是说它是离散的,它是从算盘的这样的一个基础上发展而来的。算盘我们就知道这个数值,数字它不连续,它的数量的大小啊它是按位运算的,不停地不连续地跳动着来计算的,那么这就是我们的电子数字计算机。那么呢我们的电子数字计算机又会分成通用计算机和专用计算机。那么通用和专用是根据什么来划分的呢?是通过它的效率、速度、价格以及运行的经济性和适应性来划分的。专用机是最有效的、最经济的和最快速的计算机,但是它的适应性是非常差的。我们可以看到它是专用计算机嘛,而通用计算机它的适应性很大,适应性很大呢就牺牲了效率、速度和经济性,啊,所以它这两个是有一定的区别的。那么通用计算机又可以分成巨型机、大型机、中型机、小型机、微型机和单片机。它们的区别就在于体积、简易性、功率损耗、性能指标、数据的存储容量、指令系统的规模以及它的机器价格。一般来说我们的巨型机啊是用于科学计算的,而像这种单片机、这种微型机它就指定规模就比较小,它的结构规模也比较小。那么通用和专用,专用机呢是针对某一个任务设定的计算机,按道理来说它的这个结构是比通用机简单的。目前已经出现了多种型号的这种单片专用机和嵌入式的单片机,用来测试和控制。
不仅有这样的分类方式,我们还可以有指令流和数据流,从这个方面来进行对计算机的划分。那么第一种呢叫做单指令流、单数据流的计算机,也就是我们经典的冯诺依曼体系结构的计算机,也就是这样的一个计算机。那么什么是冯诺依曼体系结构的计算机呢?在这里大家不需要进行深入的了解,只要知道它是单指令流、单数据流的,也就是一条指令一条数据这样来传输的,我们将在下一节详细地来讲解什么叫做冯诺依曼体系结构的计算机。那么还有一种呢叫做单指令流、多数据流,也就是说我们一条指令、多条数据,比如我们的阵列处理器和我们的向量处理器,像这样的就是我们的单指令流、多数据流的计算机。那么除了这两种我们还可以进行比如说像多指令流、单数据流,那么像这样的计算机它存在吗?显然它是不存在的。怎么可能是多条指令而一条数据啊,这样是不可能的,所以它是不存在的。那么多指令流、多数据流这种呢是存在的,比如像我们的多处理器,就是一种多指令流、多数据流的计算机。还有我们的多计算机,像这种东西呢,就叫做多指令流、多数据流的计算机。好,知道这些概念就可以了,不需要深入了解,也不需要过多太多地纠结。