1946年,冯•诺依曼提出了以存储程序为核心的计算机模型,该计算机模型一直沿用至今。通常称该计算机模型为冯•诺依曼模型(结构),将采用该思想设计的计算机为冯•诺依曼计算机。
冯•诺依曼计算机由运算器、控制器、存储器、输入设备和输出设备组成,其结构如图所示,运算器、控制器常合称为中央处理器(Central Processing Unit, CPU)。
冯•诺依曼提出了以存储程序为核心的计算机模型,但部分文献资料里又提到【由于输入 / 输出与运算器进行数据交换,因此,计算机以运算器为中心。】那么 冯•诺依曼计算机到底是 存储为中心,还是计算为中心?
冯·诺依曼计算机结构在早期是以运算器为中心的,但在后期逐渐转变为以存储系统为中心。但随着计算机的发展,很难说简单界定以谁为中心。
冯・诺依曼计算机是以存储程序为基础的,在一定程度上可以说存储是其关键支撑部分,但整体架构的运行围绕着计算任务的完成。数据和程序以二进制形式存放在存储器中,这使得计算机具有通用性和灵活性。存储器可以长期保存大量信息,为计算机的各种操作提供了基础数据资源,没有存储器中程序和数据的预先存储,后续的计算将无从开展。中央处理器(CPU)根据存储在存储器中的程序指令,对数据进行算术运算、逻辑运算等各种操作。计算过程中的控制单元负责指挥整个计算机系统的运行,协调各个部件的工作,确保按照程序的顺序进行正确的计算。它根据程序指令的要求,从存储器中读取指令,解释指令并产生相应的控制信号,控制数据的流向和运算的执行。
冯・诺依曼计算机中存储和计算相辅相成,计算是实现计算机功能的直接体现,而存储为计算提供了必要的基础和支持,两者共同构成了冯・诺依曼计算机的核心体系。
冯•诺依曼计算机采用“存储程序”工作方式。其基本思想是:程序和数据预先存放在存储器中,机器工作时,自动、逐条地从存储器中取出指令并执行。
注意:
在冯•诺依曼计算机里,不考虑缓存,而且
一句话,所有设备都只能直接和内存交互。
在现如今,由于主存与CPU速度不匹配,其存储器结构越来越复杂。通常来说,速度越快,每字节的成本越高。倘若以磁盘等作为主存,又无法满足CPU 和主存之间的速度差异,由木桶原理可知,这会降低计算机整体效率。
为了平衡其容量、速度以及价格,有人提出分层组织存储器系统的方法,称为存储器层次结构( memory hierarchy),也有文献称之为层次化存储体系。如图所示:
存储器层次结构的中心思想是:对于每个 k, 位于k + 1 层的更快更小的存储设备作为位于k + 1层的更大更慢的存储设备的缓存。 换句话说,层次结构中的每一层都缓存来自较低一层的数据对象。
当程序需要第k + 1层的某个数据对象d时,它首先在当前存储在第k层的一个块中查找。如果 d刚好缓存在第 k 层中, 那么就是我们所说的缓存命中(cache hit)。该程序直接从第 k 层读取数据d,根据存储器层次结构的性质,这要比从第k + 1层读取更快。当缓存不命中时,第k层则从第k + 1层去取出包括d的块。程序则可以像之前一样从第k层读取d了。
一般而言, 高速缓存(cache, 读作 “cash”) 是一个小而快速的存储设备,它作为存储在更大、也更慢的设备中的数据对象的缓冲区域。 使用高速缓存的过程称为缓存( caching, 读作“cashing”)。为解决主存储器与处理器速度不匹配而生。
早期计算机系统的存储器层次结构只有三层 :CPU 寄存器、DRAM 主存储器和磁盘存储。不过,由于 CPU 和主存之间逐渐增大的差距,系统设计者被迫在 CPU 寄存器文件和主存之间插入了一个小的 SRAM高速缓存存储器, 称为 L1 高速缓存(一级缓存)。L1高速缓存的访问速度几乎和寄存器一样快。随着 CPU 和主存之间的性能差距不断增大,系统设计者在 L1 高速缓存和主存之间又插人了一个更大的高速缓存,称为 L2 高速缓存。有些现代系统还包括有一个更大的高速缓存,称为 L3 高速缓存,在存储器层次结构中,它位于 L2 高速缓存和主存之间。
总体来说:距离CPU越远,速度越慢,容量越大,成本也就越低。
说的有点小复杂了。来,看个简易版:
每一层的容量是递增的,那么对于高层来说,存储数据少,意味着每一层命中的概率并不高。同时,各层存储之间的速度差异,CPU要高速工作,我们希望CPU需要的数据更多的就在L1里面以提高命中率,不希望更多的跑到下面内存乃至磁盘里面去找。
内存是插在主板上的,是用于保存CPU运算的中间数据和计算结果;一般是由DRAM构成。
而高速缓存Cache不是以 “Cache 条” 这样的形式插在主板上常规可见的插槽中的;Cache是可以被焊接在主板上,或者直接集成在CPU内部。
案例:基于冯•诺依曼计算机描述:从登录上QQ开始和某位朋友聊天开始,数据的流动过程。 从你打开窗口,开始给他发消息,到他的收到消息之后的数据流动过程。如果是在QQ上发送文件呢?
当你发送消息时,先通过键盘这个输入设备键入消息到内存中,内存将数据加载到CPU中处理(封包,加密等处理),CPU处理完后又加载到内存中,内存中的数据又加载到显示器让你看到,同时又输出到网卡,此时显示器与网卡均作为输出设备。
数据经过网络来到朋友的网卡,此时网卡担任输入设备,将数据加载到内存中,经过内存来到CPU处理(解包,解密等),CPU处理完后数据流向内存,并最终输出到显示器上,此时你的朋友就收到了你的消息。
与上述发送消息类似,不过发送文件时,自己的输入设备为磁盘,朋友的输出设备也是磁盘。
参考:https://blog.csdn.net/qq_56780490/article/details/128143369【本文层次化存储体系部分段、实例分析取自该文章】
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。