一. 计算机的基本组成:
我们知道计算机的三大件:CPU、内存、主板
CPU,全名叫中央处理器(Central Processing Unit),它是最重要的核心配件,因为计算机基本所有的“计算”工作都是由CPU来完成的。
第二个是内存。我们撰写的程序,打开的网页,运行的游戏,都要加载到内存中运行。程序读取的数据、计算得到的结果,也都要放到内存中。内存越大,加载的东西越多。
存放在内存中的数据,需要被CPU读取,CPU计算完后,再放回内存,然而内存不能直接插到CPU上,故而我们有了最后一个大件——主板
主板是一个有着各种各样的插槽的配件。CPU和内存都会插到主板上,主板的芯片组和总线解决了CPU和内存之间如何通讯的问题。
芯片组:控制着数据传输的流转,也就是数据从哪里到哪里的问题。
总线:就是数据传输的高速公路。因此总线速度决定了数据传输的多快。
三大件配上电源,计算机差不多就可以跑起来了,但是目前还确实输入/输出设备,也就是I/O设备,比如鼠标、键盘就是输入设备,显示器就是输出设备。
最后配上硬盘,就可以保证数据的持久化。显卡是一个特殊的设备,因为显卡有除了CPU之外的另一个“处理器”,也就是GPU,也可以处理一些“计算”工作。
鼠标键盘这些都插在主板上,作为外部I/O设备,它们主要是通过主板的南桥芯片组来实现与CPU的通讯的。“南桥”顾名思义,在主板的南侧,是为了连接鼠标、键盘以及硬盘这些外部设备和CPU之间的通讯。
有了“南桥”,我们可以想到应该是有“北桥”的。以前主板上有“北桥”,用来连接CPU和内存、显卡之间的通讯。但是随着时间推移,这部分功能已经内置到CPU中,所以在主板上,已经没有“北桥”了。
二. 冯诺依曼体系结构
冯诺依曼体系结构,也叫做存储程序计算机。什么是“存储程序计算机”?这里暗含两个概念,一个是“可编程”的计算机,一个是“可存储”的计算机。
说到“可编程”,我们先说说“不可编程”。计算机是由各种门电路组合而成,然后通过组装成电路板,来完成一个特定的计算程序,一旦需要修改功能,就要重新组装电路。这样的话,就是“不可编程”的,因为计算机硬件层面是“写死”的。最常见的就是老式的计算器,电路板设计好了加减乘除,做不了任何计算逻辑固定之外的事情。
我们再看“可存储”的计算机。其实这里就是说,程序本身是存储在计算机的内存中,可以通过加载不同的程序来解决不同的问题。
冯诺依曼在他的一篇《First Draft》文章中,说了一台计算机应该有哪些部分组成。
首先是一个包含“算术逻辑单元”和“处理器寄存器”的处理器单元,用来完成各种算术和逻辑运算。因为它能完成数据的各种处理和计算工作,所以也称之为“数据通路”或者“运算器”。
然后是一个包含“指令寄存器”和“程序计数器”的控制器单元,用来控制程序的流程,通常就是在不同条件下的分支和跳转。在现在的计算机中,上述所说的“运算器”和“控制器”组成了CPU。
接着是用来存储数据和指令的内存。以及更大容量的外部存储,再过去可能是磁带,磁鼓这样的设备,现在是硬盘。
最后就是各种输入输出设备,以及对应的输入输出机制。
任何一台计算机中的任何一个部件,都可以归到运算器、控制器、存储器、输入设备和输出设备中,而现在所有的计算机也都是基于这个基础架构设计的。
而所有的计算机程序,可以抽象为从输入设备读取输入信息,通过运算器和控制器来执行,执行后的数据存储到存储器中,最终把结果输出到输出设备上。
三. 总结:
冯诺依曼体系结构确立了现在计算机硬件的基础架构,因此我们学习计算机组成原理,就是学习和拆解冯诺依曼体系结构。
具体来说,学习计算机组成原理,其实就是学习运算器和控制器的运行原理,也就是CPU怎么工作,为何这样设计;学习内存的工作原理,从最基本的电路,到上层抽象给到CPU乃至应用程序的接口是怎样的;学习CPU怎么和输入/输出设备打交道?
学习计算机组成原理,就是在理解从控制器、运算器、存储器、输入设备和输出设备,从电路这样的硬件到最终开放给软件的接口,是如何运行的,为什么这么设计,以及软件开发层怎么尽可能用好它。
四. 思考:
除了冯诺依曼,还有图灵机,那么图灵机和冯诺依曼有什么区别?图灵机是什么样的计算机抽象呢?
答:(1)冯诺依曼体系结构侧重于计算机硬件的抽象,提出了“存储程序计算机”的设计思想。
(2)图灵机,侧重于计算抽象,是一种思想模型(计算机的基础理论基础),是一种有穷的、构造性问题的求解思路,图灵机解决的是“哪些可计算”和“哪些不可计算”的问题。
如果你想一起学习这门课,可以扫下面的二维码购买: