首页 > 其他分享 >信息存储的层次与并行技术

信息存储的层次与并行技术

时间:2023-06-22 15:11:55浏览次数:45  
标签:存储 主存 层次 Cache 并行 映像 地址 相联

Cache 存储体系功能操作的实现

  物理地址 Cache 地址变换

    这里首先要说明的是:主要是记住各个映像规则关系和变化方法

   同时根据映像规则需要能够写出 主存地址,Cache地址,映像表的格式

     

  《全相联》

 从图中我们可以看出相联度为Cb

  所谓相联度即是主存储器中的任意一块可以映射到Cache存储器中多少块上

  这里主存储器的任意一块可以映射到Cache存取器上的任意一块,所以为Cb

 

同时我们应该还能得到

  主存地址:主存块号+块内地址

  Cache地址:Cache块号+块内地址

  映像表存储字:主存块号+Cache块号+有效位(1位)

    这里需要说明一下如何理解这个映像表:

      我们知道设置映像表的目的是为了查看主存储器中的哪些块已经在Cache中了

      为此,不同的映像规则,映像表中需要保存的字段也不一样

      这里因为主存块号与Cache块号是直接对应的关系,所以这里的映像表字段表示: 主存块号A已经在Cache里了,其保存在Cache中的B块号中

      这里的有效位是为了检测Cache缓存是否有效

    

  整个主存地址 变换到 Cache地址的过程为:

    当 CPU 发送来一个主存地址时,地址映像电路以主存地址块号 B 为相联查找的关键字

 

      如果查找到一行存储字的主存块号字段与主存地址块号相同,而且有效位为1      则 Cache 命中且有效,取存储字的 Cache 块号 b 与主存地址的块内地址 拼接在一起,形成 Cache 地址访问 Cache 存储器     

     注意主存地址中的块内地址与Cache地址中国的块内地址是一样的

  

  《直接相联》

   注意直接相联的如下特点:

    1.主存储器按照Cache存储器的大小进行分区

    2.上图中主存储器中块是连续编号下来的,但是在主存地址中,各个区的块是0,1...Cb-1循环编址即:

      

 

    3.Cache存储器中的i块对应着主存储器中的各个i块(来着不同的区)

 

同理根据上图我们可以得出:

  主存地址:区号+区内块号+块内地址

  Cache地址:块号+块内地址

  映像表存储字:主存区号+有效位(1位)

  

 

主存地址变化到Cache地址的过程:

  首先我要说明的是这里映像表的每一行与Cache中的每一行一一对应,即映像表的i行记录了Cache中i行保存的是主存中哪一个块

  

  首先地址映像电路由 主存地址区内块号 按地址读取区表(即上映像表)中的一个存储字

  (注意 主存地址区内块号 ==  Cache块号,这里是根据这个块号,直接去查询区表中对应的块号(即行号))

  只要映像表中这个块号处记录的 主存区号 == 主存地址区号,而且有效位为1,Cache命中且有效

  (思考一下,这里为何只要记录区号,而且区号对上了就能说明命中呢?为何不要记录块号呢?

   因为Cache块号保存的是 主存中各个不同的区号

只要区号 不同块号一定不同(在主存块号连续编号的情况下)

  )

 

 

  

  《组相联》

 

 

  组相联依旧是按照Cache存储器的大小进行分区

  但是区中规定一个块数,主存和Cache都按照这个块数进行分组

 

  组相联映像规定主存各区的组到Cache 的组之间采用直接相联映像,二个对应组的块之间采用全相联映像  

主存地址:区号+区内组号+组内块号+块内地址

Cache地址: 组号+组内块号+块内地址

 

对应映像表存储字中是什么我们要想以下,要记录什么才能使 主存地址->Cache地址

  首先面对到来的一个主存地址,我们想知道这个主存地址对应的块是否在Cache中

  那么首先我们需要分清楚这个主存地址是哪个的区,Cache中是否有这个区中的块

  所以我们需要记录主存区号

  这里映像表中的行数 == Cache存储器的行数 (块数),而且Cache存储器中的组 来着 主存中不同分区的相同组,这说明了只要知道了主存中的区号 和 Cache组号就能知道 这是主存中哪个区的哪个组

   所以我们并不需要记录主存组号

  因为组与组之间是全相联,所以我们需要记录主存组内块号,以及Cache组内块号

 

综上:主存区号+主存组内块号+Cache组内块号+有效位(1位)

  

 

主存地址->Cache地址:

  地址映像电路由主存地址区内组号  按地址读取块表中连续存储的组块容量 Gb个存储字

 

  对读取 Gb个存储字的 主存区号 和 主存组内块号字段 与 主存地址中相应的区号 和 块号  进行相联比较     如果 Gb个存储字有一存储字比较相同,且有效位为 1,则 Cache 命中且有效,从该字中取出 Cache 块号 b′与主存地址中的区内组号 G 和块内地址 W 拼接起来形成 Cache 地址,访问 Cache 存储器

 

    

 

 

 

《Cache 块替换算法》

  需要注意以下LRU算法中计数器的实现方式:

  在映像表中每行存储字增设一个替换计数器字段

 

  Cache 块

 

    装入(含空闲装入和替换装入)时,将该块所属计数器置零,同组其它块所属计数器

 

均加 1;     Cache 块命中时,将该块所属计数器置零,同组其它块所属计数器的值,       若小于命中块所属计数器的原值,则加 1,       否则计数器值不变;     需要 Cache 块被替换时,在同组 Cache 块中选择计数器值最大(一般为全 1)的对应块被替换出去   

 注意这个变化的过程

 

 

 

 

标签:存储,主存,层次,Cache,并行,映像,地址,相联
From: https://www.cnblogs.com/cilinmengye/p/17497624.html

相关文章

  • Postgresql SQL 优化 两个模型与数据存储
    这里写的是一个系列,这是系列的第三篇,这个系列主要是针对SQL优化,前两篇的地址下文字的最下方。接上次,上次提到了SQL优化的原理与理论,实际上SQL优化的原理是离不开两个模型与数据存储的, 整体SQL优化的核心也在于两个模型和数据存储。简化的说明这两个模型1 数据访问成本模型2 ......
  • Polardb 核心存储 polarfs 是怎么进行数据存储的之核心构造(2)--译
    接上期,PolarFS主要由两层组成,一层是存储管理层,上面一层是文件系统元数据和提供文件系统API层,存储层负责所有节点的磁盘资源,并为每个数据库实例提供数据库卷。文件系统层在此基础上提供文件管理,负责文件系统元数据并发访问的互斥。下图为展示POLARFS集群中的主要组件,libpfs是一个......
  • Polardb 核心存储 polarfs 是怎么进行数据存储的(1)--译
    POLARDB数据库中有一个核心是他重新设计的存储系统,polarfs,polarfs是怎么设计的架构是怎样的,下面根据官方的一篇详细的英文文档作为翻译的目标https://www.vldb.org/pvldb/vol11/p1849-cao.pdf译PolarFS是专门为polardb设计的分布式文件系统,他具有低延迟,高可用的特点并且这款存......
  • Postgresql 如何降低 wal 占用磁盘空间,降低磁盘存储成本
    POSTGRESQLWAL的存储一直是一个值得讨论的问题,到底一个POSTGRESQL在极端的情况下,可以用多少的空间来存储WAL日志。这里不是要讨论逻辑复制槽,也不是讨论ARCHIVE,这里要讨论是一种极端的方法,尝试将POSTGRESQLWAL占用的磁盘空间最小化。这里主要针对的对象是,单机的POSTGRESQL,不......
  • POSTGRESQL 存储过程--如何写出新版本PG的存储过程的小案例
    随着问问题的同学越来越多,公众号内部私信回答问题已经很困难了,所以建立了一个群,关于各种数据库的问题都可以,目前主要是POSTGRESQL,MYSQL,MONGODB,POLARDB,REDIS,SQLSERVER等,期待你的加入,最近在开始研究POSTGRESQL的存储过程,主要的原因有以下几个1因为要开发适合目前公司中......
  • 数组越界导致的死循环,以及对存储方式的思考
    一、bug有如下代码:intmain(){ inti=0; intarr[10]={1,2,3,4,5,6,7,8,9,10}; for(i=0;i<=12;i++){ printf("hehe\n"); arr[i]=0; } return0;}按正常思路,该代码会打印13个hehe,并把arr数组里的10个元素改为0,但为什么计算机会死循环打印无数个hehe?二、原......
  • MySQL 视图&存储过程&函数
    1视图1.1视图的作用当我们创建一张表的视图后,可以用和表差不多的使用方式来使用视图,比如可以对视图进行select查询操作、过滤或者排序数据等等。同时,也可以联结其它视图或者表,甚至可以添加和更新数据(但一般不会这么做,而且存在诸多限制)。总结起来,视图有以下优点:重用SQL语句,简......
  • lucene 文件存储相关的几个类
    lucene文件存储相关的几个类,以及他们的派生关系如下图:Directory 代表了Lucene的索引的存储的位置,这是一个抽象类。DbDirectory存储到BerkeleyDB4.3 的实现,BerkeleyDB是历史悠久的嵌入式数据库系统,主要应用在UNIX/LINUX操作系统上,其设计思想是简单、小巧、可靠、高性......
  • 如何从AWS中学习如何使用AmazonSimpleStorageService(S3)进行数据存储
    目录文章标题:32.《如何从AWS中学习如何使用AmazonSimpleStorageService(S3)进行数据存储》背景介绍:随着数据量的不断增加,数据存储的需求也越来越大。传统的数据存储方式已经无法满足现代应用程序的需求,因此,数据存储技术不断发展和创新,尤其是在云计算领域,各种存储解决......
  • 并行计算中的线程和进程:原理与实践
    目录1.引言2.技术原理及概念2.1基本概念解释2.2技术原理介绍3.实现步骤与流程3.1准备工作:环境配置与依赖安装3.2核心模块实现3.3集成与测试4.应用示例与代码实现讲解4.1应用场景介绍4.2应用实例分析4.3核心代码实现4.4代码讲解说明5.优化与改进5.1性能优化并行计算......