冯诺依曼体系结构

1. 什么是冯·诺依曼体系

冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同。数学家冯·诺依曼提出了计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分组成(运算器、控制器、存储器、输入设备、输出设备),这套理论被称为冯·诺依曼体系结构。

  • 特点:
    现代计算机发展所遵循的基本结构形式始终是冯·诺依曼机结构。这种结构特点是“程序存储,共享数据,顺序执行”,需要 CPU 从存储器取出指令和数据进行相应的计算。 [2]主要特点有:
    (1)单处理机结构,机器以运算器为中心;
    (2)采用程序存储思想;
    (3)指令和数据一样可以参与运算;
    (4) 数据以二进制表示;
    (5)将软件和硬件完全分离;
    (6) 指令由操作码和操作数组成;
    (7)指令顺序执行。
  • 局限
    CPU 与共享存储器间的信息交换的速度成为影响系统性能的主要因素,而信息交换速度的提高又受制于存储元件的速度、存储器的性能和结构等诸多条件。

2. 冯·诺依曼体系

冯诺依曼体系由五个组成部分,分别是输入设别,输出设备,存储器,运算器,控制器。
运算器:用于完成各种算术运算、逻辑运算和数据传送等数据加工处理。
控制器:用于控制程序的执行,是计算机的大脑。运算器和控制器组成计算机的中央处理器(CPU)。控制器根据存放在存储器中的指令序列(程序)进行工作,并由一个程序计数器控制指令的执行。控制器具有判断能力,能根据计算结果选择不同的工作流程。
存储器:用于记忆程序和数据,例如:内存。程序和数据以二进制代码形式不加区别地存放在存储器中,存放位置由地址确定。
输入设备:用于将数据或程序输入到计算机中,例如:鼠标、键盘,磁盘,网卡,话筒,摄像头等。
输出设备:将数据或程序的处理结果展示给用户,例如:显示器、打印机,网卡,磁盘,声卡,显卡等。

冯诺依曼体系结构_第1张图片

3. 数据的流通

当你用手机个你的朋友发消息的时候,你的朋友收到了来自你的问候。首先你输入的信息肯定是从键盘开始输入的的,最后到你朋友的电脑上。在这个过程当中,可定是你的键盘通过某种方式到达网络的设备,比如说网卡,最后你的信息才可以被发出去。这个道理就告诉我们,我们的设备都是独立的,但是,是通过某种物理已经存在的某种方式,将我们的设备与设备之间形成一定的联系,可以让数据从一个设备到另一个设备。那这些设备是怎么链接的呢?这些设备是通过线来链接的。但是我们使用的时候并没看到线啊?其实这些线都被集成在了电脑当中有一个叫做主板的东西。其中内部有各种硬件电路,各种设备都是直接或间接与主板链接,也就充当了线。

也就说我们的设备是独立的,但是是连接,设备与设备之间可以实现通信,信息的流动的。所以链接的最终目的就是为了可以实现数据之间的流通。我们从键盘当中输入信息,我们怎么才能看到输入的信息呢,那就是输入到显示屏,这就是一个数据的流通,数据从键盘流通到了显示屏。

数据可以在设备之间的来回流动,本质是不是数据的来回拷贝。数据从键盘流通到显示屏,就是将数据从键盘拷贝到显示屏上。拷贝的整体速度就决定了计算机效率的重要指标。

有了线的概念我们就知道了数据是怎么流通的了。比如我们输入信息到显示屏上,根据冯·诺依曼体系我们可以知道数据的流通方式是:首先数据从键盘中输入也就我们的输入设备,经输入设备到达储存器(内存),内存把数据给中央处理器CPU,经CPU处理封装后还给储存器,再由储存器给输出设备也就我们的显示屏,这样我们就可以在显示屏上看到数据了。

4. 内存提高冯•诺依曼体系结构效率的方法

在这里大多数人有一个疑惑就是,先将输入设备的数据交给内存,再由内存将数据交给CPU,这个过程真的比CPU直接从输入设备获取数据更快吗?

冯诺依曼体系结构_第2张图片
这样不就可以将我们输出设备和输入设备直接与CPU直接有关系了吗
在计算机当中存在一个存储金字塔体系:
冯诺依曼体系结构_第3张图片
在这个金子塔中我们可以看到,距离CPU越近,效率越高,造价贵,单体容量越小。距离CPU越近,效率越低,造价便宜,单体容量越大。而输出输入设备的效率速度是很慢,但是我们的CPU速度很快。不知道大家知不知道木桶效应,一个水桶无论有多高,它盛水的高度取决于其中最低的那块木板。
冯诺依曼体系结构_第4张图片
所以这个时候就有了内存的内存,内存的运行效率比输入输出设备快,但是比CPU慢,处于中间状态。那么这个时候输入输出都往内存中输入输出数据,CPU也从内存中输入输入数据,CPU和输入输入设备分离开来形成间接关系。这个时候我们计算机的运行效率就不取决外设,而是取决于内存。

而且由于局部性原则:
说明这个问题之前,我们首先需要知道:内存具有数据存储的能力。虽然内存的大小只有4G/8G,但是既然内存有大小,那么它就有预装数据的能力,而这就是提高该体系结构效率的秘诀。

这里不得不说到的就是局部性原理:根据统计学原理,当一个数据正在被访问时,那么下一次有很大可能会访问其周围的数据。所以当CPU需要获取某一行数据时,内存可以将该行数据之后的数据一同加载进来,而CPU处理数据和内存加载数据是可以同时进行的,这样下次CPU就可以直接从内存当中获取数据,我们可以称为预先加载。

输出数据的时候也一样,CPU处理完数据后直接将数据放到内存当中,当输出设备需要时再在内存当中获取即可,这也就有了我们平常所说的缓冲区的概念。例如,缓冲区满了才将数据打印到屏幕上,使用fflush函数将缓冲区当中的数据直接输出之类的,都是将内存当中的数据直接拿到输出设备当中进行显示输出。

而对数据的预先加载和缓存,并不是硬件做到事情而是软件做到事情,也就跟操作系统有关。那么这个时候计算机的最终效率就以内存为主,而内存的效率的提高是由预先加载与缓存这两个动作所决定的,那么最终的最终计算机的效率就转接到了软件的效率也就是操作系统的效率。

5. 总结

这里的存储器指的是内存。
不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)。
外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。
一句话,所有设备都只能直接和内存打交道。
计算机的效率因为冯诺依曼体系把受硬件影响转化到了软件影响。

6. 数据的流通过程

我们写程序的时候,运行的时候都是要先加载到内存当中的。那么为什么呢?
我们的写好的程序是不是一个文件,文件存放在磁盘上,而磁盘是外设。我们的程序有对应的指令和数据,而这些指令和数据最终是要CPU执行的,而要执行一定要加载到CPU当中才行。那么要到CPU中,就一定要经过内存,因为冯诺依曼体系规定的。

这里我们可以模拟以下信息的流通过程。
比如你早上你用电脑给你妈妈的电脑上用qq或者微信发了一个早安,那么无论是你的电脑还是你妈妈的电脑都是一个冯诺·依曼体系结构。这样我们就可以分析出他的数据流通过程。对于你的电脑,你的键盘就是输入设备,你发消息给你的妈妈要用到网络,那么你的网卡就是你的输出设备。对于你妈妈的电脑,妈妈接收消息要用到网络所以你妈妈的电脑的网卡就是输入设备,显示屏就是输出设备。
冯诺依曼体系结构_第5张图片
当你从键盘上输入早安,这个这个时候消息加载到了内存,你的显示屏就能从内存中拿到数据,这个时候你就可以在你的显示屏上看到你输入的消息。而接下来CPU从内存中拿到数据,对数据进行封装,加密操作,然后还给内存,此时你的网卡就可以从内存中拿到加工好的数据,然后经过网路的一系列处理就到了你妈妈的电脑上,你妈妈的电脑网卡接收到了数据,网卡把接收的数据加载到内存中,内存将数据交给CPU处理,CPU经解密,解包后交还给内存,这个时候显示屏从内存中拿到数据,显示屏就会显示早安这个消息。

7. 总结

我们知道了冯诺依曼体系结构由输入设备,输出设备,储存器,运算器,控制器五个部分组成,其中运算器和控制器统称为CPU,而存储器称为内存。虽然设备之间是相对独立的,但是设备与设备之间通过线联系到了一起,使数据可以在各个设备之间进行流通。而数据在设备之间的流通本质上就是数据在各个设备之间的来回拷贝,所以数据的拷贝效率就反应了计算机的整体效率。而由于考虑到计算机的效率问题,如果是外设直接跟CPU交涉不仅对计算的效率没有提高,反而因为木桶效应影响了计算机的效率。所以引入了内存的概念。内存起到了核心部分,CPU自始至终都只跟内存交互,外设输入输出设备也是只跟内存进行交涉。这个时候计算机的效率就可以用内存的效率替代,而内存的重要一个特点就是可以数据进行预加载和缓存,这个操作是通过软件操作的,也就是我们的操作系统。这个时候计算机的效率就由内存反映到了由软件所影响,这也是冯·诺依曼体系结构作为重要的部分。

你可能感兴趣的:(#,Linux学习,服务器,网络,linux)