首页 > 其他分享 >Cache - 直接映射缓存

Cache - 直接映射缓存

时间:2023-06-09 14:33:52浏览次数:42  
标签:缓存 字节 映射 Cache cache 地址 tag line


1. Cache line

  • cache size:cache可以缓存最大数据的大小。
  • 将cache均分相等的块,每一块称为cache line,现在的硬件设计中,一般cache line的大小为4-128字节,cache line做的太小会导致tag资源占用过大。
  • cache line 是 cache 和主存之间数据传输的最小单位。
    • 在cache缺失时,即使CPU只需要从主存中读1个字节的数据出来,但是还是会直接load出8(该值为设定的cache line大小)个字节填充整个cache line。

2. Cache控制器怎么确定是否命中

  • 首先假设cache 大小为64Bytes,cache line大小为8Bytes。假设CPU想从地址为0x0654地址取一个字节数据。
  • 考虑cache line大小为8Bytes,使用地址低3bit来寻址其中的一个字节。(offset[2:0])
  • 计算可得有8个cache line,可以使用3bit地址来寻址是哪个cacheline。(index[5:3])
  • 对于一个地址,即使确定了[5:3]bit,也不能就确信找到了正确的地址,还有更高位数信息。
    • cache将高位信息用tag表示, tag、index、offset可以确定唯一的那个地址。
  • 检查是否命中:首先根据index找到cacheline,然后将cache的tag与地址的tag比对,如果相等,说明命中,如果不等,说明缺失。
  • tag 前面还加了一位valid bit,首先判断该位,判断缓存中的数据是否有效,若无效不用判断是否命中,直接缺失。

3.直接映射缓存的优缺点

  • 优点:硬件设计更简单、成本低。
  • 缺点:cache thrashing(cache 颠簸)
    • 与上面假设相同,此时cpu想依次访问0x00,0x40,0x80地址的数据,这三个对应的index和offset都是一个,唯一区别是tag值。
    • 访问0x00时,cache缺失,cpu从主存中load出8个字节大小的数据填充cache line。
    • 访问0x40时,索引到第0行cacheline,但这里存的是0x00对应的数据,仍缺失,再加载0x40地址的数据。
    • 依次类推,0x80也要经过刚才两步:缺失+从主存中load。
    • 这样cache对性能没什么提升。
  • 为了解决这个问题,引入了多路组相连缓存,见这篇博客

标签:缓存,字节,映射,Cache,cache,地址,tag,line
From: https://www.cnblogs.com/qianbinbin/p/17469125.html

相关文章

  • Memcache升级版:CouchBase的安装配置与使用说明
    Memcache基本上已经是开发的标配了,但是对于Memcache集群,很多线上部署仍然是很单薄的。几个存在的问题:不健壮、数据不安全、配置变更可能导致存取异常、后备数据的一致性鉴于存在以上问题,Memcache的开发团队开发了Membase,支持多台服务器集群,数据的切片和复制,有效的提高了服务稳定性......
  • 浏览器存储和浏览器缓存的区别?
    浏览器存储和浏览器缓存是两个不同的概念,其主要区别如下:数据类型不同浏览器存储可以用来存储各种类型的数据,包括字符串、数字、布尔值、对象、数组等等。而浏览器缓存则主要用于缓存已经访问过的资源文件,例如HTML、CSS、JavaScript、图片、音视频等。存储位置不同浏览器......
  • 【缓存】J2Cache —— 基于内存和 Redis 的两级 Java 缓存框架的使用方法
    本文目录一、J2Cache简介二、数据读取三、使用方法及实际示例3.1引用Maven3.2准备配置3.3编写代码3.3.1Demo示例3.3.2实际案例四、常见问题4.1J2Cache的使用场景是什么?4.2为什么不能在程序中设置缓存的有效期4.3如何使用memcached作为二级缓存4.4使用何种Redis的存......
  • 深入浅出Spring原理及实战「缓存Cache开发系列」
    1.  缓存Cache的概念和作用在现代软件开发中,缓存已经成为了一个非常重要的概念。缓存是指将数据存储在一个临时的存储器中,以便于快速访问和读取。缓存的作用是提高系统的性能和响应速度,减少网络流量和数据库的负载。以电影院购票为例,当用户选择一部电影时,系统需要查询电影的......
  • 关于 Cache
    参考https://zhuanlan.zhihu.com/p/1022934371.为什么需要Cache运行一个进程的步骤(假设为一个变量a加1)首先从磁盘(辅存)中读出可执行程序,并将其load到主存储器中。CPU从主存储器中读出地址为A的数据发到CPU的通用寄存器中。将通用寄存器的值加1.CPU再将通用寄存器的......
  • Using Redis Cache for session data storage in ASP.NET Core
    reference: https://docs.microsoft.com/en-us/aspnet/core/performance/caching/distributed?view=aspnetcore-6.0Postedon:11-12-2017TweetWhenyourunanappindevelopmentortesting,itcanbeokayforsessiondatatobelostduringapprestarts.However,in......
  • libmemcached API介绍
    有关memcached的C语言接口——libmemcached的介绍:详情参见:http://docs.libmemcached.org/index.html  1.       创建和删除memcached_st结构。#include<libmemcached/memcached.h>memcachd_st ;该结构可以静态创建也可以由memcached_create动态创建。memc......
  • mybatis的缓存
    1. 什么是缓存  113缓存:cache1.1 缓存的作⽤:113通过减少IO的⽅式,来提⾼程序的执⾏效率。1.2 mybatis的缓存:113将select语句的查询结果放到缓存(内存)当中,下⼀次还是这条select语句的话,直接从缓存中取,不再查数据库。⼀⽅⾯是减少了IO。另⼀⽅⾯不再执⾏繁琐的查找算法。效率⼤⼤......
  • springMVC集成缓存框架Ehcache
    概述Ehcache算是当前比较流行的缓存框架,使用缓存可以极大的缓解服务器和数据库的压力,提高访问效率,提高服务器的并发能力。接下来我们看怎么把缓存在springmvc种使用起来。详细Ehcache算是当前比较流行的缓存框架,使用缓存可以极大的缓解服务器和数据库的压力,提高访问......
  • 静态资源映射
    静态资源映射概念:在web开发中,对静态资源映射是必不可少的,而所谓的静态资源映射,通俗来说,就是给项目导入图片,js,css等资源,同时可以进行访问。1.通过DefaultServlet处理静态资源在spring3.0.4以后的SpringMVC模块提供了静态资源映射器组件。通过mvc:resources标签配置静态资......