1.2.1+1.2.2 计算机硬件的基本组成
00:00
好的,上个小节中我们了解了计算机系统的概念,还有计算机的一个发展历程。这个小节中我们会着重的探讨计算机硬件的一个基本组成。我们需要掌握这样的两种结构,第一种是早期的冯诺依曼结构,另一种是现代计算机所普遍采用的结构,其实是冯诺依曼结构的一个优化。
00:21
好,首先来看一下什么是冯诺依曼结构的计算机。还记不记得上个小节中我们说过,世界上第一台计算机是ENIAC,当时冯诺依曼就是这台计算机设计的一个顾问。这台计算机一个很大的缺点就是每一步的计算需要执行什么指令,都需要这些程序员操作员们通过手动连接这些线缆的方式来告诉计算机。所以虽然这台计算机它执行运算的速度很快,但是由于这些程序员们每一次都需要手动的接线来告诉他下一步应该怎么做。因此埃尼亚克的计算速度就被手工操作的所需要的这个耗时给抵消了。
01:06
所以为了解决这个问题,冯诺依曼这个天才他第一次提出了存储程序的概念。所谓存储程序就是指可以把我们需要执行的一系列指令,以二进制代码的方式提前把它输入到计算机的主存储器当中,也就是我们熟悉的内存里边。然后计算机会根据存储器里边存储的这一系列的指令来一条一条的执行,直到程序执行结束。也就是说对于安尼亚克这台计算机,是程序员们告诉他一条指令,他就往下执行一条指令,说一句做一句。而冯诺依曼提出的存储程序的这种实现方式,就意味着我们可以把我们想要让计算机执行的一系列指令全部一口气告诉它,全部先放到主存里,然后接下来会由计算机一条一条的来执行这些指令。
02:03
程序员们就不需要每一步都进行手工连接的操作,这就可以大幅提升计算机的一个计算速度。那基于他提出的这个设计方案,世界上第一台具有冯诺依曼结构的计算机就诞生了,这台计算机的英文缩写叫EDVAC,这是一个英文的全称。冯诺依曼计算机的一个硬件结构是这个样子的。在这个图中我们用这种实现箭头来表示数据线。也就是说数据可以跟着这个实现箭头的流动方向来相互的传递传输。像这种双箭头就意味着两个部件之间有你来我往的这种数据传输。另外我们会用这种虚线来表示控制线和反馈线。
02:50
好,来具体分析一下这个图是什么意思。我们的计算机其实就是用来处理一些数据的,所以要让计算机处理数据,我们首先需要有一个输入设备,把数据输入到计算机当中。那这儿的数据包含我们要进行数学运算的数据,也包含了程序,也就是指令集合所例。输入设备的一个作用就是把计算机要处理的这些信息转换成机器能够识别的形式,也就是0101这样的二进制数。那可以看到我们输入的这些数据程序,通过输入设备处理之后,这些数据是先流向了运算器。然后通过运算器的中转,才会把这些程序数据把它放到内存,也就是这儿所谓的存储器当中。所以这个存储器就是用来存放我们要处理的数据,还有程序指令的。
03:50
而中间的这个运算器,它最主要的一个功能是实现算术运算,还有逻辑运算。算术运算就是加减乘除那些运算,逻辑运算指的就是与或非这些运算。经过运算器的处理之后,这些数据的运算结果会通过输出设备把它转换成我们人类比较熟悉的形式。
04:14
另外还有一个非常重要的部件叫控制器。控制器会用一些电信号来协调其他这些部件,相互配合着工作。另外控制器也会负责来解析存储器里存储的那些程序指令。所以我们会看到这儿有一条存储器到控制器的一个数据线。这条数据线其实就是控制器从存储器当中读取出一条指令的一个数据流。比如说读入的是一个加法指令还是乘法指令,那控制器解析了这条指令之后,它才会来指挥这个运算器执行相应的加减乘除之类的运算。所以程序指令的解析是由控制器来完成的。因此计算机中的控制器就是用来指挥程序有条不紊的运行的那我们输入计算机的这些数据和程序,其实就是所谓的软件的模块,这个框里边的这些部分其实就是计算机的硬件部件。
05:22
那在计算机系统中,其实软件和硬件在逻辑上是等效的,什么意思呢?也就是说对于同一个功能,我们既可以用软件来实现,也可以用硬件来实现。不过通常来说用软件实现的成本更低,但是效率也会更低。而用硬件来实现成本会更高,当然效率也会更高。
05:45
比如说如果我们要实现乘法运算,那么我们完全可以在运算器里边设计一个专门的硬件电路来实现这种乘法运算。我们只需要给出一条乘法指令,运算器就可以得到最终的结果。但是如果我们没有这个硬件部件,其实也可以实现乘法。因为乘法其实可以用多次的加法运算来模拟。我们完全可以使用加法运算的这个指令执行多次加法,用这样的方式来等效的模拟出乘法运算。所以我们才说软件和硬件在逻辑上其实是等效的。显然用硬件的方式乘法电路直接计算肯定是更快一些。用软件的方式进行多次加法,那就需要消耗更长的时间。
06:34
好的,那到目前为止我们就搞清楚了什么是冯诺依曼机,对于这些什么控制线数据线,现在理解的不是很透彻也没有关系,我们之后还会用更详细的例子带大家来分析。总的来说,冯诺依曼结构的计算机有这样的一些特点。第一个特点,计算机由五大部件组成,也就是这儿画的这五个部件。其中输入设备和输出设备,我们可以把它们统称为IO设备。I的意思是input,O的意思是output。好,这是冯诺依曼基的第一个特点。
07:10
第二个特点,指令和数据同样都是以二进制的方式,同等的地位存放在存储器当中,我们可以根据存储单元的地址来进行缓存的操作。这个内容我们留在之后再来解释,指令和数据都是用二进制表示的。采用二进制表示的原因是我们可以很方便的用电信号来表示零和一这样的两种状态。
07:35
第四个特点,指令由操作码和地址码组成,操作码就是指明了这条指令它要进行的是什么样的操作。比如说加减乘除,这些就是操作码来指明的。而地址码是指明了我们要操作的这些数据,它存放在内存的什么地址当中。程序执行的过程中,其实就是根据指令里边指明的这个地址,对特定的一个内存单元进行访存操作的。好,第五个特征就是存储程序,这个我们之前解释过,就是说会提前的把指令和数据存储到存储器当中。
08:18
好,第六个特征就是冯诺依曼计算机是以运算器为中心的,什么意思呢?你看我们的运算器,它处在整个结构的中间位置,无论是输入设备输入数据,还是输出设备输出数据,都肯定需要经过运算器的一个中转。虽然说我们刚开始输入的这些数据和程序,本来就是想要放到这个存储器里的,但是冯诺依曼这种结构的计算机都是会通过运算器作为中转站,把它转存到这个存储器里边的。所以由于数据的传送必须经过运算器来完成,因此我们说这种结构是以运算器为中心。那这就产生了一个问题,我们的运算器本来是用来处理这些数据的核心部件,但是现在所有的数据中转还需要通过它来帮忙完成。那这样的话会导致数据计算的效率降低。
09:17
来看这样的一个例子。其实我们的计算机它本质上就是一个数据的加工厂。数据输入到计算机当中,然后处理完了之后输出。那对于现实世界当中的加工厂,通常会有一个采购部门负责采购一些他需要加工的原材料。这其实就是我们输入的数据。另外我们会有一个生产加工的部门,对这些原材料来进行加工处理。还有一个部门是仓储部门,这个部门其实就是用来存放我们接下来要处理的这些原材料物资的,那当我们加工完成之后,会由销售部门把产品卖出去。另外我们还会有一个霸道总裁来负责指挥各个部门的运行。
10:02
所以在我们的这个例子当中,采购部门他采购的这些原材料本来是可以直接放到仓储部门的。但是现在他偏偏要先把这些东西先交给这个加工部门,然后让加工部门再来把它转运到仓储部门去。同样的加工完的这些产品,我们其实本来可以直接放到仓储部门,然后直接由销售部门从仓储部门取走这些产品。但是当销售部门要取走最终的成品的时候,还需要由这个生产加工部门来进行一个中转,把这些东西交给他,这显然是低效的那讲到这儿,相信大家脑子里应该已经有一个解决方案了。
10:45
解决方案很简单,这个解决方案其实就是现代计算机的一个结构。传统的冯诺依曼结构的计算机都是以运算器作为核心,数据的传输都需要通过运算器作为中转,但是现代计算机通常是以存储器为中心,也就是说输入设备它的数据是直接放到这个存储器里面的当运算器处理完这些数据之后,输出设备也会直接从存储器当中取走最终的数据,进行计算结果的输出。这样的话就可以更多的解放运算器的时间,可以让运算器进行更多的运算。我们现在使用的手机计算机基本上都是这样的一个结构。
11:31
由于运算器还有控制器,它们之间的逻辑关系十分紧密。所以在大规模集成电路制作工艺出现了之后,这两个部件通常是被集成在同一个芯片上的那整合了这两个部件的芯片就是我们现在熟悉的CPU。所以CPU里边既包含了运算器,也包含了控制器。因此如果把这个结构框图给简化一下,就可以表现成这样的形式。CPU里边包含了运算器和控制器,控制器通过控制线来告诉运算器,你接下来应该执行的是加减乘除什么样的运算。另外控制器也会来控制主存储器的一个读写,还有输入输出设备的一个启动停止。
12:19
主存储器和CPU之间会进行数据的交换。第一种就是需要参与运算的那些数据。比如XY之类的一些变量。另外一种数据就是指令,指令会放到控制器当中,由控制器来解析这条指令的含义,并且发出相应的控制信号。最右边这个双向的箭头是说我们的IO设备,也就输入输出设备会直接的和主存储器进行数据的交换。
12:50
主存储器和CPU统称为主机,所以我们计组里边提到的主机和大家平时熟知的这种主机是有区别的。我们平时生活中所谓的这个主机,它里面除了CPU主存储器之外,还会包含其他的比如硬盘,还有风扇之类的这些设备。所以这个概念大家需要注意一下。
13:13
另外一个大家比较容易混淆的概念是主存和辅存这两个东西。这两个东西都可以统称为存储器。主存就是主存储器,也就是我们熟知的内存。而辅存就是辅助存储器,在电脑里边就是我们的机械硬盘、固态硬盘。需要注意的是,虽然它们都是存储器,但是我们这儿所谓的主机是只包含了主存,而辅存我们应该把它归为IO设备。像我们平时手机里安装的APP,其实它就是存放在辅存里边的。只有这个APP需要启动运行的时候,才会把辅存里边的APP相关的程序数据,代码的数据把它读到主存里边。所以储存应该把它看作是一种IO设备。
14:07
像之前我们给的这个图,华为这个手机,它这儿所谓的运行内存8GB指的就是主存储器的大小容量是8GB,然后机身存储是128GB这个指的就是辅存。所以主存储器还有辅助存储器,然后计组里边主机这几个概念大家需要特别的注意一下,比较容易混淆。好的,这个小节当中我们简单的介绍了计算机硬件的基本组成,分为五大部分,分别是输入设备、输出设备,还有主存储器、运算器和控制器。后边这三个硬件部件组成了所谓的主机。
14:46
那这个小节中我们学习了两种计算机硬件的结构。第一种就是传统的冯诺依曼结构。冯诺依曼这个人他首次提出了存储程序的概念,应用了这个概念,我们的计算机才实现了自动化的执行代码这样的一个事情。另外冯诺依曼结构的计算机是以运算器为中心的,而现代计算机的硬件结构通常是以存储器为中心。运算器和控制器这两个硬件部件现在一般都会被集成在同一个芯片里边,这个芯片就是大家熟悉的CPU。好的,下一个视频中我们会更深入的来分析计算机主机的这几个部件,它们的内部又是怎么构造的,它们之间如何协调的工作。以上就是这个小节的全部内容。
*文章整理自B站公开课程《王道计算机考研 计算机组成原理》,仅作学习交流使用。