前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >存储概述:计算机层次化存储体系概述

存储概述:计算机层次化存储体系概述

原创
作者头像
Janesong
修改2024-08-30 23:03:24
1430
修改2024-08-30 23:03:24

冯•诺依曼体系

1946年,冯•诺依曼提出了以存储程序为核心的计算机模型,该计算机模型一直沿用至今。通常称该计算机模型为冯•诺依曼模型(结构),将采用该思想设计的计算机为冯•诺依曼计算机。

硬件结构

冯•诺依曼计算机由运算器、控制器、存储器、输入设备和输出设备组成,其结构如图所示,运算器、控制器常合称为中央处理器(Central Processing Unit, CPU)。

冯•诺依曼体系计算机结构
冯•诺依曼体系计算机结构

QA:冯•诺依曼计算机里是以存储为中心,还是以计算为中心?

冯•诺依曼提出了以存储程序为核心的计算机模型,但部分文献资料里又提到【由于输入 / 输出与运算器进行数据交换,因此,计算机以运算器为中心。】那么 冯•诺依曼计算机到底是 存储为中心,还是计算为中心?

冯·诺依曼计算机结构在早期是以运算器为中心的,但在后期逐渐转变为以存储系统为中心。但随着计算机的发展,很难说简单界定以谁为中心。

冯・诺依曼计算机是以存储程序为基础的,在一定程度上可以说存储是其关键支撑部分,但整体架构的运行围绕着计算任务的完成。数据和程序以二进制形式存放在存储器中,这使得计算机具有通用性和灵活性。存储器可以长期保存大量信息,为计算机的各种操作提供了基础数据资源,没有存储器中程序和数据的预先存储,后续的计算将无从开展。中央处理器(CPU)根据存储在存储器中的程序指令,对数据进行算术运算、逻辑运算等各种操作。计算过程中的控制单元负责指挥整个计算机系统的运行,协调各个部件的工作,确保按照程序的顺序进行正确的计算。它根据程序指令的要求,从存储器中读取指令,解释指令并产生相应的控制信号,控制数据的流向和运算的执行。

冯・诺依曼计算机中存储和计算相辅相成,计算是实现计算机功能的直接体现,而存储为计算提供了必要的基础和支持,两者共同构成了冯・诺依曼计算机的核心体系

工作方式

冯•诺依曼计算机采用“存储程序”工作方式。其基本思想是:程序和数据预先存放在存储器中,机器工作时,自动、逐条地从存储器中取出指令并执行。

注意:

  • 这里的主存储器指的是内存,也叫主存。
  • 不考虑缓存情况,这里的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越远,速度越慢,容量越大,成本也就越低

说的有点小复杂了。来,看个简易版:

层次化存储体系 - 简易图
层次化存储体系 - 简易图

局部原理 principle of locality

每一层的容量是递增的,那么对于高层来说,存储数据少,意味着每一层命中的概率并不高。同时,各层存储之间的速度差异,CPU要高速工作,我们希望CPU需要的数据更多的就在L1里面以提高命中率,不希望更多的跑到下面内存乃至磁盘里面去找。

  • 时间局部性:指程序中的某条指令一旦执行,不久以后该指令可能再次执行,典型原因是 由于程序中存在着大量的循环操作。
  • 空间局部性:指一旦程序访问了某个存储单元,不久以后,其附近的存储单元也将被访问, 即程序在一段时间内所访问的地址可能集中在一定的范围内,其典型情况是程序顺序执行。

内存和Cache硬件形式

内存是插在主板上的,是用于保存CPU运算的中间数据和计算结果;一般是由DRAM构成。

而高速缓存Cache不是以 “Cache 条” 这样的形式插在主板上常规可见的插槽中的;Cache是可以被焊接在主板上,或者直接集成在CPU内部。

案例分析 -- QQ聊天,数据的流动过程

案例:基于冯•诺依曼计算机描述:从登录上QQ开始和某位朋友聊天开始,数据的流动过程。 从你打开窗口,开始给他发消息,到他的收到消息之后的数据流动过程。如果是在QQ上发送文件呢?

发送消息

  当你发送消息时,先通过键盘这个输入设备键入消息到内存中,内存将数据加载到CPU中处理(封包,加密等处理),CPU处理完后又加载到内存中,内存中的数据又加载到显示器让你看到,同时又输出到网卡,此时显示器与网卡均作为输出设备。

  数据经过网络来到朋友的网卡,此时网卡担任输入设备,将数据加载到内存中,经过内存来到CPU处理(解包,解密等),CPU处理完后数据流向内存,并最终输出到显示器上,此时你的朋友就收到了你的消息。

发送文件

与上述发送消息类似,不过发送文件时,自己的输入设备为磁盘,朋友的输出设备也是磁盘。

参考:https://blog.csdn.net/qq_56780490/article/details/128143369【本文层次化存储体系部分段、实例分析取自该文章】

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 冯•诺依曼体系
    • 硬件结构
      • QA:冯•诺依曼计算机里是以存储为中心,还是以计算为中心?
    • 工作方式
    • 层次化存储体系
      • 局部原理 principle of locality
        • 内存和Cache硬件形式
          • 发送消息
      • 案例分析 -- QQ聊天,数据的流动过程
        • 发送文件
        相关产品与服务
        对象存储
        对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档