目录
冯·诺依曼体系结构推导
内存提高冯·诺依曼体系结构效率的方法
你使用QQ和朋友聊天时,整个数据流是怎么流动的(不考虑网络情况)
与冯·诺依曼体系结构相关的一些知识
冯·诺依曼体系结构推导
计算机的存在就是为了解决问题,而解决问题,首先需要将数据或是问题输入到计算机当中,所以计算机必须要有输入设备,计算机解决完问题后还需要将计算结果输出显示出来,所以计算机必须要有输出设备。计算机通过输入设备得到数据,数据在计算机当中进行一系列算术运算和逻辑运算后,通过输出设备进行输出,于是就得到了一下流程图
但是计算机当中只有算术运算和逻辑运算功能以及控制功能是不够的还需要有控制功能,控制何时从输入设备获取数据,何时输出数据到输出设备等。对应到C语言当中,算术运算就完成一系列的加减乘除,而逻辑运算就对应于一系列的逻辑与逻辑或等,控制功能就对应于C语言当中的判断,循环以及各个函数之间的跳转等等
而这个具有算术运算,逻辑运算以及控制功能的设备被我们称为:中央处理器(cpu)
但是输入设备和输出设备相对于中央处理器来说是非常慢的,于是在当前这个体系整体呈现出来的就是输入设备和输出设备很慢,而CPU很快,根据木桶原理,最后整个体系呈现出来的速度将会很慢
所以以上体系结构虽然可以使用,但是还不够完善,于是为了解决输入输出设备和cpu配合使用慢的问题,我们可以通过在它们之间加入存储器也就是内存,提高整个体系的速度,内存的速度比输入输出设备快很多,但是比cpu慢,内存在整个体系结构当中起着缓冲的作用,总的来说还是提高了整个体系的速度
现在这个体系的运行流程就是:用户通过输入设备向内存中写入数据,cpu读取数据时会直接到内存当中读取,cpu处理完读取到的数据之后再将数据较放回内存,最后内存会把数据交给输出设备,进行输出显示
内存提高冯·诺依曼体系结构效率的方法
内存具有存储数据的能力,虽然它的大小只有4G/8G,但是既然内存有大小,那么它就有预装数据的能力,这就是提高整个体系结构效率的原因
根据统计学原理,当一个数据正在被访问时,那么下一次有很大可能会访问其周围的数据。所以当CPU需要获取某一段数据时,内存可以将该行数据之后的数据一同加载进来,而CPU处理数据和内存加载数据是可以同时进行的,这样下次CPU就可以直接从内存中获取数据
输出数据的时候也一样,CPU处理完数据后直接将数据放到内存当中,当输出设备需要时再到内存中获取即可,这也就有了我们平常所说的缓冲区的概念。例如,缓冲区满了才将数据打印到屏幕上,使用fflush函数将缓冲区当中的数据直接输出之类的,都是将内存当中的数据直接拿到输出设备当中进行显示输出
你使用QQ和朋友聊天时,整个数据流是怎么流动的(不考虑网络情况)
登录qq,qq这款软件加载到内存中,然后中央处理器开始执行qq的代码,我使用输入设备(键盘)将信息放到内存中,然后CPU进行打包计算,计算完成之后将数据放回到内存中,通过输出设备(网卡,显示器)
你的朋友通过输入设备(网卡)接收到你发来的数据,这些数据会放入到内存中,再由CPU进行解包解压操作,经过CPU处理完之后再放回到内存中,最后由输出设备(qq的对话框)进行读取数据
与冯·诺依曼体系结构相关的一些知识
根据冯·诺依曼体系结构图,我们可以知道,站再硬件角度或是数据层面上,CPU只和内存打交道,外设也只和内存打交道。到这里我们也可以说明一个问题:为什么程序运行之前必须先加载到内存?
因为可执行程序(文件)存在于硬盘(外设)上的,而CPU只能从内存中获取数据,所以必须先将硬盘上的数据加载到内存,也就是必须先将程序加载到内存
常见的输入输出设备(拓展)
输入设备:键盘,摄像头,话筒,磁盘,网卡,鼠标,扫描仪等
输出设备:显示器,播放器,硬件,磁盘,网卡,打印机等
注意:同种设备在不同的场景下可能是输入设备,也可能是输出设备,例如:网卡
CPU中存在寄存器,实际寄存器不仅仅存在于CPU中,在其他外设中也是存在寄存器的,例如:当我们在敲击键盘的时,键盘是先将获取到的内容存储到寄存器当中,然后通过寄存器将数据写到内存中
在物理层面上,各个硬件单元之间是通过总线链接的,外设与内存之间的总线叫做IO总线,内存与CPU之间的总线叫做系统总线