计算机组成

2 计算机基本结构

2.2 冯·诺伊曼结构的要点

2.2 冯·诺伊曼结构的要点-编程知识网

现在的计算机形态各异,但是究其本质,几乎全部采用了冯·诺依曼结构要了解计算机,首先要知道什么是冯·诺依曼结构。当然,冯·诺依曼结构的内涵是非常丰富的。在这一节,我们先来探究其中的一些要点。

2.2 冯·诺伊曼结构的要点-编程知识网

要说冯·诺依曼结构,我们就要从《EDVAC的报告草案》中说起。在冯·诺依曼署名编写的这份报告中,详细描述了EDVAC这台计算机的设计方案。从那之后一直到现在,绝大多数计算机都基于这个结构进行设计。这样的结构就被称为冯·诺依曼计算机结构,简称冯·诺依曼结构。

2.2 冯·诺伊曼结构的要点-编程知识网

这是这份报告当中的一页。我们可以看到下方还有 EDVAC 的字样。这份报告长达101页,虽然最终并未完稿,但其内容已经非常的丰富。主要论述了两个重要的思想。第一,控制计算机的程序应该存放在存储器中,而不是有开关连线来实现。开关连线会大大降低计算机的运行效率。第二,计算机应该采用二进制,而不是十进制。十进制的的方式会导致计算机的内部结构变得异常的复杂。这份报告还明确了计算机的内部结构应该有五个部分组成。包括运算器、控制器、存储器、输入设备和输出设备。我们想要了解这五个部分的含义,不妨先来看一个小例子。

2.2 冯·诺伊曼结构的要点-编程知识网

让我们跨越到70年代。在1971年,诞生了世界上第一个商业微处理器。Intel4004 图中这颗金色的芯片就是4004,它的面积很小,采用了10微米的制造工艺,内部晶体管2250个,主频最高740KHz,字长是4位。那么跟今天相比,它的各项指标都显得非常落后了。现在的微处理器制造工艺已经达到了10纳米这个量级,晶体管数量甚至可以达到数十亿。而主频也提高了几千倍。字长现在常用的是64位或者32位。但是如果跟冯·诺依曼所处的时代相比4004已经拥有了非常不错的性能。实际上4004拥有与ENIAC相当的性能,那4004是用来做什么的呢?其实他最初的目的并不是用来制造计算机的。

2.2 冯·诺伊曼结构的要点-编程知识网

这就是4004最初的产品。大家看是什么?其实他就是一个计算器。和我们现在经常拿在手上用的是同一个类型。那么当时,正是应日本一家生产厂商的要求,intel才设计了4004。那我们把这台机器打开看一看,这是这台机器的主板,我们把一个局部放大,中间这块金色的芯片自然就是4004,它旁边这块芯片是4001,是一块只读的存储器,它里面存放着一些指令,但是只能读,不能写,它的特点是断电以后,内容不会丢失。4004左边这块是4002,是一块随机存储器。它的特点在于可以很方便的进行读和写,但是断电以后内容就会丢失。那么4003是移位寄存器芯片,实际用来负责进行输入和输出。那我们可以看到4004之所以叫做4004,其实它还有一帮兄弟,从4001、4002到4003,它们和4004一起构成了一个完整的芯片组。

2.2 冯·诺伊曼结构的要点-编程知识网

这个芯片的组合被称为MCS。那这张照片是这个芯片组的另一种实现,同样也连接了这个计算器的键盘和打印机的输出。虽然这只是一个计算器,还算不上一台计算机,但它和冯·诺依曼结构有着简洁明了的对应关系。首先4004作为微处理器或者叫CPU,其实包含了运算器和控制器的功能,4002对应着存储器,而键盘通过一片4003进行连接构成了输入设备。另一片4003连接了打印机,构成了输出设备。在这里我们就可以看到这个计算器其实非常简洁明了的对应了冯·诺依曼结构。至于4001,它并不属于我们现在要说的冯·诺依曼结构的五大组成部分。但是在冯·诺依曼结构当中也有它的一席之地, 这一点我们以后再说。

2.2 冯·诺伊曼结构的要点-编程知识网

回来看冯·诺依曼结构的要点。冯·诺依曼结构中规定了计算机的五大组成部分。第一部分,运算器,简称CA,这是英文中央算术运算的缩写。第二部分控制器,简称CC,这是中央控制的缩写。存储器,简称M。输入设备,简称I。输出设备,简称O。这五大部分连接形成一体。就构成了冯·诺依曼结构的计算机。

2.2 冯·诺伊曼结构的要点-编程知识网

那么,冯·诺依曼结构除了说明计算机应该由这五大部分组成之外,还指出计算机的数据和程序均已二进制代码的形式,不加区别的存放在存储器中,存放的位置由存储器的地址指定。第三, 计算机在工作时能够自动的从存储器中取出指令加以执行。当然这份报告中描述内容还有很多,我们先来看这几点。其实第二点和第三点,其核心内容就是我们所说的存储程序的概念。那我们就围绕着运算器、控制器和存储器这一部分,先来看一看存储程序到底指的是什么。

2.2 冯·诺伊曼结构的要点-编程知识网

运算器、控制器和存储器是冯·诺依曼结构的核心。如果要与现代计算机进行对照的话,运算器和控制器应该对应于现在计算机中的CPU,而存储器应该对应于现在计算机中的主存储器,我们又常称之为主存或者内存。CPU和主存储器之间一般通过系统总线进行连接。

2.2 冯·诺伊曼结构的要点-编程知识网

我们以个人计算机为例,在这块个人计算机的主板上会有CPU芯片、主存,通过主板上的系统总线进行连接。首先我们来看主存是如何组织的。

2.2 冯·诺伊曼结构的要点-编程知识网%20

我们要关注两个名词。一个是地址,一个是内容。地址是指每个存储单元对应的序号,一般是从0开始,0、1、2、3逐个编制,在这里我们是用二进制进行表示的。而内容是指存储单元中存放的信息,在现在的计算机当中一般一个存储单元就是一个字节,也就是8个二进制位。主存的地址和内容的关系我们再来解释一下。就好比有这么一个货架,这个货架有四层。那我们为每一格进行一个编号,编为第0格、第1格、第2格、第3格,这些编号就相当于主存的地址,而货架上存放的物品就是主存贮存的内容。主存中存放的就是我们计算机当中所需要使用的程序和数据。那么存储程序的概念又是如何体现的呢?我们一起来看。

2.2 冯·诺伊曼结构的要点-编程知识网

如果把冯·诺依曼结构的计算机比作一个餐馆的话,其中的CPU就好比是厨房,主存好比是餐馆当中的仓库。在CPU当中大厨自然是控制器,运算器就好比是厨具。你给了它不同的原料,经过运算以后就可以得到相应的结果。那么在仓库当中就放满着我们刚才所说过的那样的货架,有很多,而且货架是被连续编号(主存地址)的。第一个货架编了0,1,2,3,第二个是4,5,6,7,后面我们应该还能看到有很多的货架。那么这些货架上放的是什么呢?我们会看到这里有一些像一张一张纸一样的东西,它就是这个餐馆厨师会要用到的任务单,上面会写着要你这个厨师接下来该做一些什么事。一张任务单上写着一条指令,可能是要你炒一个菜,也可能要你从厨房搬个东西,这都有可能,对于计算机来说这就是一条一条的指令。若干条的指令就可以组合成一个程序,把这个程序存放在存储器当中,这就是存储程序的一个很重要的概念。后面这些蔬菜实际上就是餐馆的原料了,就相当于计算机当中的数据。这里就体现出了冯·诺依曼结构当中所说的将程序和数据不加区分的存放在存储器当中。那么不是冯·诺依曼结构又是什么样的呢?就好比这个餐馆里的库房里存放的全是原料,就是这些蔬菜,原料。 没有这些任务单,厨师的任务呢是通过别的方式发布给厨师的。比如说要通过餐馆的经理,直接把任务单送到厨师这来,送一张任务单厨师就完成一项任务,这就是ENIAC的工作方式。那大家觉得这样有什么不好呢?这似乎更自然一些,我们现实生活中也是这样的,哪有把厨师要做的任务单跟这些蔬菜放到一起呢,对吧?前提在于现实生活中这样的运转可能没有问题,餐馆经理给厨师下达的任务单速度也挺快,送来一张任务单,厨师做一盘菜,过一会儿又送来一张任务单,厨师再做一盘菜。衔接是非常合适的。对于计算机来说,它的要点在于CPU运转的很快,即使 ENIAC 那个时候速度也是相当快的,而外部人们能给它下指令的速度太慢了,我们想象一下这个餐馆如果开在火星,我们一次已经把他做菜所需要的原料运到这火星这个餐馆的仓库里了,但是厨师要做的事情呢却是由我们地球上的这个经理一张一张任务单送过去,我们现在到火星送一张任务单过去可能要花一年的时间,厨师收到这张任务单以后,很快就从仓库里取来蔬菜,然后做了一盘菜可能就花十分钟的时间,然后他怎么办呢?只能坐在那接着等第二张任务单,因为他不知道下面该做什么了。再等一年再收到一张任务单,再花十分钟做一盘菜。这样的效率大家看到是非常低的,这正好就是ENIAC的工作方式。

2.2 冯·诺伊曼结构的要点-编程知识网

现在我们就能明白了冯·诺依曼结构中存储程序的概念。计算机所需要的程序和数据,通过输入设备进入了存储器,控制器发出地址给存储器,获得程序当中的对应的指令,还可以得到相应的数据。控制器发命令给运算器,指挥运算器对数据进行相应的运算。运算器可能会返回一些运算的状态,比如说是否正确完成等等,最后还会将运算的结果存放到存储器中。最后还需要通过输出设备将结果输出到计算机外部的某些存储介质上。这样才能完成整个计算的过程。

2.2 冯·诺伊曼结构的要点-编程知识网

现在我们已经知道了冯·诺依曼结构中最重要的部分。那这个结构又是如何运转的呢?下一节我们将通过一个小故事来了解这一点。

转载于:https://www.cnblogs.com/houhaibushihai/p/9092485.html