现在我们生活在一个高度信息化的世界,我们每天都在使用电脑,手机这些东西,所有的这些东西都属于计算机的范畴,计算机的最底层是由硬件组成的,在硬件之上,我们会加设操作系统,在操作系统之上,我们在安装一下常用的应用软件,这样我们就能得到一些方便应用的计算机了,另外,通过计算机网络,使得所有的计算机都实现互联互通,所以这就是我们生活的信息化世界的一个模型。具体如下图所示:
计算机组成原理就是研究计算机硬件在底层是如何相互协调的工作。
1.计算机发展历程
1.什么是计算机系统
计算机系统由“硬件”和“软件”构成,所谓硬件就是计算机的实体部分,就是我们看得见摸得着的部分,比如主机、鼠标、键盘;软件就是看的见摸不着的东西,比如操作系统,微信,微博等。
硬件是计算机系统的物理基础,它决定了计算机系统的天花板,而软件决定了我们可以将硬件的性能发挥到怎样的程度。所以,计算机性能的好坏取决于软硬件功能的总和。
而软件又可以划分为系统软件和应用软件,系统软件又称为系统程序,主要用来管理整个计算机系统,例如操作系统,数据库管理系统(DBMS),标准的程序库以及语言处理程序(将用户编写的高级语言编译翻译为机器语言)等;应用软件又称为应用程序,它是根据任务需求编制成的各种程序。
2.硬件的发展
1.第一代电子管计算机
在1946年,第一台电子计算机诞生,这台计算机有一个响亮的名称,叫做ENIAC。1943年,第二次世界大战进入后期,当时美国军方在研发新武器的时候,需要计算武器的射程和弹道轨迹这些数据,如果使用手工方式计算,那会非常慢,所以军方提出要制造一台可以快速进行数学运算的计算机,所以当时是军事武器的发展需求带动了计算机的发展。
ENIAC采用十进制运算,电路结构十分复杂,使用了18000多个电子管,运行时耗电量达150千瓦,体积庞大,重量达20吨,占地面积约170平方米,每秒可进行5000多次加法运算。
但是使用电子管做为计算元件,体积大,耗电量高,且计算速度慢。 因此,在20世纪50年代末,计算机技术迎来了第一次大飞跃的发展机遇,其性能出现了数十倍以至几百倍的提高,这就是晶体管替代电子管的重大变革。
2.第二代晶体管计算机
1947年在贝尔实验室成功地用半导体硅作为基片,制造了第一个晶体管,它的小体积,低耗电以及载流子高速运行的特点,使得真空管望尘莫及。使用晶体管替代电子管可以使计算机的体积得到大幅度降低,计算机的运算速度也达到了一个质的飞跃,可以达到每秒计算几十万次这个数量级。在这个阶段开始出现一些高级计编程语言,同时为了让计算机拥有自我管理的能力,连续的完成一系列任务,这时候开始出现操作系统。
但是,制造一台计算机大概需要几万到几十万个晶体管,需要将这些晶体管用手工的方式焊接到电路板上,所以这时候计算机硬件还是不可靠的,因为任何一个焊接点出现问题,都会导致整个计算机不能正常工作。因此后来有人便发明了集成电路。
3.第三代中小规模集成电路计算机
中小规模集成电路计算机就是会把逻辑元件集成在基片上,采用集成电路的制造工艺,使得我们的计算机变得越来越小,公司功耗更低,同时可靠性要比晶体管的可靠性要高得多。这个阶段,各种高级编程语言开始迅速发展,同时有了分时操作系统。
4.第四代大规模集成电路计算机
随着集成电路工艺的不断提升,慢慢的开始进入第四代,即大规模集成电路计算机,此时开始出现微处理器和微型计算机。同时这个阶段额诞生了我们现在耳熟能详的一些操作系统,Windows,MacOS,Linux。
5.第五代超大规模集成电路
从1978年至今,均属于超大规模集成电路。
3.软件的发展
在计算机发展的初期,所有的编程都需要用机器语言,也就是0101这样的机器语言。后来由于机器语言可读性较差,因此发明了汇编语言,汇编语言其实和机器语言本质上是一样的,只不过汇编语言会把机器语言转化为人类更方便计算的一些符号,总体上编程还是会很困难。后来为了让编程更简单丰富,出现了类似于C++,PASCAL的高级编程语言,程序员在使用这些编程语言编写程序的时候就不需要关注机器的特性,只需要关注于自身需要解决的问题就可以了。**因为这些高级语言接近与人类使用的自然语言。**总之,编程语言是为了制造软件的,编程语言是否好用直接决定了我们使用的软件世界是否足够丰富。
2.计算机硬件的基本组成
1.早期的冯诺依曼结构
世界上第一台计算机是ENIAC,当时冯诺依曼就是这台计算机的一个顾问,这台计算机的一个很大的一个缺点就是每一步的指令都需要程序员或操作员们通过手动连接线缆的方式来控制计算。所以虽然这台计算机执行运算的速度比较快,但由于程序员每一次都需要手动接线来告诉计算机下一步该怎么做,因此ENIAC的计算速度就被手工操作的耗时给抵消了。所以为了解决这个问题,所以冯诺依曼这个天才她第一次提出了可以存储程序的概念。
“存储程序”的概念是指将指令以二进制代码的形式事先输入计算机的主存储器(内存),然后按其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直至程序执行结束。
基于存储程序的概念,世界上第一台采用冯诺依曼结构的计算机EDVAC就诞生了。
冯诺依曼计算机的硬件结构如下图所示:
简单来说,我们的计算机就是用来处理数据的,要让计算机处理数据,我们首先得有一个输入设备,把数据输入到计算机当中,这的数据包含真实的数据也包含了指令集合。因此,输入设备的作用就是将信息转换成机器能识别的形式(机器语言),我们需要输入的数据程序,通过输入设备处理后,这些数据是先流向了运算器,然后通过运算器中转,才会把程序数据放到内存(存储器)中。所以存储器的作用呢就是用来存储数据以及指令的。中间的运算器最主要的就是实现算术运算(加减乘除)和逻辑运算(与或非)。经过运算器的处理之后这些数据的运算结果会经过输出设备把它转换为我们人类熟悉的形式。另外,还有一个非常重要的部件叫控制器,控制器会用一些电信号来协调其他部件的相互配合的工作,控制器也会负责来解析存储器里面的程序指令。因此控制器的作用就是指挥程序有条不紊的运行的。
冯诺依曼计算机的特点:
1.计算机由五大部件组成;
2.指令和数据以同等地位存储于存储器,可按地址访问;
3.指令和数据都是用二进制表示,其原因是我们可以很方便的使用电信号来表示0,1两种状态;
4.指令由操作码(需要完成何种类型的操作)和地址码(操作的数据存储在内存的位置)组成;
5.存储程序;
6.以运算器为中心。
通过冯诺依曼计算机的特点中,它是以运算器为中心,但是我们输入的数据和程序本来就是想要直接放入存储器中,但是冯诺依曼这种结构的计算机都是会通过运算器作为中转站把它转存到存储器中,这就产生了一个问题,本来我们的运算器本来是用来处理数据的核心部件,但现在所以的部件中转还需要运算器来完成,那这样会导致数据计算效率降低。因此便出现了以存储器为核心的现代计算机结构。
2.现代计算机结构
传统的冯诺依曼计算机都是以运算器为中心,而现代的计算机结构则是以存储器为中心,也就是说输入设备它的数据是直接放到存储器里面,当运算器处理完这些数据后,输出设备也会直接从存储器里面取走计算结果输出,那这样的话就可以更多的解放运算器的时间,可以让运算器做更多的运算。具体结构如下所示:
由于运算器与控制器这个部件联系十分紧密,所以在大规模集成电路中,这两个部件通常集中在一个芯片中,整合这两个部件的芯片就是我们熟悉的CPU。
现代计算机可以认为由三大部分组成:CPU,I/O设备及主存储器(内存),而CPU与主存储器合起来可称为主机,I/O设备又可称为外部设备。具体如下图所示: