首页 > 其他分享 >cache

cache

时间:2023-12-11 18:12:59浏览次数:34  
标签:cache tag memory line main cpu

  cache - 硬件控制

  CPU <--->  L1 L2  ...... <---> main memory

  两种工作方式:inclusive cache / exclusive cache,代表数据能不能同时存在于各级cache,比如L1 L2

  hit / miss

  cortex A53架构中,L1 cache分为单独的instruction cache + data cache,即ICache + DCache,L1 cache是cpu私有,一个cpu cluster共享一个L2 cache,L3 cache所有cpu共享

  cache line,cache与main memory间数据传输最小单位

  cache中有tag array + data array,tag中有一位表示V - valid,data中有一位表示D - dirty,tag array在硬件cache中,没有计算size

  一个地址寻址使用cache过程(以cache line size = 8, cache line num = 8,共64bytes cache为例):

    最后3bit索引cache line内部位置,接近3个bit索引哪个cache line,剩余的为tag;先使用中间3个bit索引哪个cache line,查看对应tag是否有效,有效则对比tag,对比成功则使用最后3个bit索引cache line中具体位置;如果过程中tag无效,或者tag对比不成功,则为miss,会重新加载对应内存从main memory到cache line,如果有旧数据(Dirty),需要先把旧数据从cache line中swap到main memory。

  直接映射缓存 - cache颠簸

  组相联缓存 - 提升硬件复杂度,降低cache颠簸频率

  全相联缓存 - 硬件成本高,降低cache颠簸频率

  cache 分配策略:

    读分配,cpu读,cache miss,分配cache line,从main memory加载数据,默认支持

    写分配,cpu写,cache miss,分配cache line,从main memory加载数据,然后写cache,不支持写分配时,cpu直接更新到main memory

  cache更新策略:

    写直通 - write through(写时保持cache和main memory数据一致) / 写回 write back(cache line被替换或者显示clean操作时更新main memory)

标签:cache,tag,memory,line,main,cpu
From: https://www.cnblogs.com/longforfreedom/p/17895058.html

相关文章

  • Docker - Remove build cache
    dockerbuilderpruneRemovebuildcacheUsagedockerbuilderpruneDescriptionRemovebuildcacheOptionsOptionShortDefaultDescription--all-a Removeallunusedbuildcache,notjustdanglingones--filter  Providefiltervalues(e.g. unt......
  • Linux下的Cache和TLB刷新 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/core-api/cachetlb.htmlLinux下的Cache和TLB刷新作者:DavidS.Millerdavem@redhat.com本文描述了LinuxVM子系统调用的缓存/TLB刷新接口。它枚举了每个接口,描述了其预期目的以及在调用接口后预期的副作用。下面描述的副作用是针对单......
  • Spring Boot 3.2项目中使用缓存Cache的正确姿势!!!
    你是否曾想过为什么在SpringBoot应用中缓存是如此重要?答案在于它通过减少数据检索时间来提高性能。在本文中,我们将深入探讨缓存对微服务模式的影响,并探讨根据操作易用性、速度、可用性和可观测性等因素选择正确缓存的重要性。我们还将探讨如何最大程度地提高缓存性能和可用性。......
  • Spring Boot 3.2项目中使用缓存Cache的正确姿势!!!
    你是否曾想过为什么在SpringBoot应用中缓存是如此重要?答案在于它通过减少数据检索时间来提高性能。在本文中,我们将深入探讨缓存对微服务模式的影响,并探讨根据操作易用性、速度、可用性和可观测性等因素选择正确缓存的重要性。我们还将探讨如何最大程度地提高缓存性能和可用性。......
  • Spring Cache
    SpringCache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。SpringCache提供了一层抽象,底层可以切换不同的缓存实现,例如:EHCacheCaffeineRedis(常用)起步依赖:<dependency><groupId>org.springframework.boot</groupId><art......
  • 指令cache一致性
    指令cache一致性​​N2alsogetsoptionalhardwareinstructioncachecoherency.ARMrecommendsenablingitonsystemswithalotofcoresbecausebroadcastingsoftware-issuedinstructioncacheinvalidateswouldnotbescalable.Toimplementinstructionca......
  • ElasticSearch之Clear cache API
    本方法用于清理缓存。命令样例如下:curl-XPOST"https://localhost:9200/testindex_001/_cache/clear?pretty"--cacert$ES_HOME/config/certs/http_ca.crt-u"elastic:ohCxPH=QBE+s5=*lo7F9"执行结果的样例,如下:{"_shards":{"total":2,......
  • dubbo中接口cache使用及原理
    服务提供者类增加注解@DubboService(cache="true")指定服务调用的缓存实现,包括:lru,threadlocal,jcache。 提供者@DubboService(token="true",cache="true")publicclassCacheServiceImplimplementsCacheService{privatefinalAtomicIntegeri=......
  • Caffeine Cache缓存
    SpringBoot集成CaffeineCaffeine和SpringCache依赖,使用注解方法实现缓存依赖<!--提供SpringBoot中的缓存支持--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</......
  • 主存Cache存储
    总结1.Cache是按块进行管理的。Cache和主存均被分割成大小相同的块。信息以块为单位调入Cache。一般将主存分割成大小相同的块后,会再将块进行分组,以Cache的总行数为一组,再分成n个块群。2.主存地址格式中的区内块号是用于查找该块在Cache中的位置,即第几行。块内位移用于确定所访......