计算机多级存储模型

2024-09-01 00:18
文章标签 模型 存储 计算机 多级

本文主要是介绍计算机多级存储模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       在研究CPU相关内容的时候,可以潜在地把存储当做一个简单的顺序存储器(类似一个大数组),CPU可以在常数时间里访问存储器的数据。但是实际上存储系统并不是这么简单的模型。

存储器结构

在这里插入图片描述
       实际的存储器模型可以形象的表示为金字塔结构(图片来自深入理解计算机系统,很好的书,值得一读)。每个上一层存储作为下一层存储的缓存,主要原因是不可能使用速度很快但是造价很高的寄存器存储所有数据,但是磁盘存储的存取速度又远远不能跟上CPU的计算速度。多级存储存在的意义就是为了解决速度和造价之间的矛盾。

由存储器结构导致的问题

       每个上层存储都作为下层存储的缓存,而缓存的主要特点是只能存储少部分拷贝数据。将必要的数据写入到缓存,最终一层一层运输到CPU中投入计算,是这个多级存储模型的最终目的。怎样调度数据写入写出缓存,以多大数据单元调度数据,是这个模型面临的主要问题。

问题解决示例

       基本各级缓存都需要解决上述关键的问题:1. 如何分块;2. 如何调度。解决这两个问题的具体策略就构成了此级缓存的特征。由于内存调度策略更多是由软件实现(操作系统),属于下个操作系统层次的内容,不在这里过多论述。下面简要介绍一下高速缓存实现策略。

  • 高速缓存

       存储器结构金字塔中所示的高速缓存L1和L2是静态随机存储器(SRAM)。静态随机存储器是由电路实现的双稳态存储单元,可以保持在不同的电压状态之一,即使存在外界干扰,也会恢复到稳定状态。
       结构:
       比如一个计算机系统的存储器地址有m位,则这个系统所能寻址的空间大小为2m(注意这里不一定对应物理内存大小)。将这个系统的高速缓存的大小分成S组(S等于2s),则标识S组中的其中一个组的地址需要的s位。每个组有可以分成E行。每行中存在t位的标志位,可以在每组的范围内唯一标识该行;一个有效位标识可以标识该行该行数据是否有效;一个大小为2b字节的数据片存储有效数据。
       这个系统中寻址一个字节需要的地址大小为m位。对应在高速缓存中,其中有s位定位一个组,t位定位一个组中的某一行,还有b位定位某一行中缓存块的某一个字节,t=m-(s+b)。这就是高速缓存解决如何分块的方案。
在这里插入图片描述
       高速缓存的调度相对比较简单。以直接映射高速缓存为例,当CPU需要取一个数据做运算时,可以先通过这个数据的地址s位确定这个数据处于高速缓存的那个组,再通过地址的t位匹配确定该数据是否位于这个组的某一行。如果匹配则可以根据偏移地址b确定数据位置返回给CPU;如果不匹配则为不命中,需要从下级存储器中读取这个数据,同时从该存储器中清除一行,存储读取的数据,并将数据返回给CPU。

    本文总要介绍了目前计算机系统普遍应用的多级缓存的概念和多级缓存的特征(分块和调度),并举例介绍了高速缓存是如何解决分块和调度的问题。其实内存管理也包含在这个体系中,但是由于内部机制大部分由软件(操作系统)实现,是属于操作系统层次的要点,这里没有作介绍。

本系列文章:
    计算机底层架构(偏硬件)综述
    计算机处理器(CPU)基础
         汇编语言基础–机器级数据存储
         汇编语言基础–汇编操作指令概述
     计算机多级存储模型
     外设IO原理

这篇关于计算机多级存储模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125404

相关文章

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

MySQL之InnoDB存储页的独立表空间解读

《MySQL之InnoDB存储页的独立表空间解读》:本文主要介绍MySQL之InnoDB存储页的独立表空间,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、独立表空间【1】表空间大小【2】区【3】组【4】段【5】区的类型【6】XDES Entry区结构【

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

MySQL 存储引擎 MyISAM详解(最新推荐)

《MySQL存储引擎MyISAM详解(最新推荐)》使用MyISAM存储引擎的表占用空间很小,但是由于使用表级锁定,所以限制了读/写操作的性能,通常用于中小型的Web应用和数据仓库配置中的只读或主要... 目录mysql 5.5 之前默认的存储引擎️‍一、MyISAM 存储引擎的特性️‍二、MyISAM 的主

Linux lvm实例之如何创建一个专用于MySQL数据存储的LVM卷组

《Linuxlvm实例之如何创建一个专用于MySQL数据存储的LVM卷组》:本文主要介绍使用Linux创建一个专用于MySQL数据存储的LVM卷组的实例,具有很好的参考价值,希望对大家有所帮助,... 目录在Centos 7上创建卷China编程组并配置mysql数据目录1. 检查现有磁盘2. 创建物理卷3. 创

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结