cache读写策略(write-back/through)与分配策略(allocate)

这篇具有很好参考价值的文章主要介绍了cache读写策略(write-back/through)与分配策略(allocate)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.allocate

先确定一下allocate的概念,就是在cache miss的时候,去内存中读写数据过程中给这个数据分配cacheLine并存储到cache。

其中write-allocate可以分为两种情况:

  • 先读要改写数据对应的cacheLine大小的数据回来,存储到新分配的cacheLine上,然后将要修改的写数据更新到cacheLine中
  • 直接分配cacheLine,将数据存储到该cacheLine

以上两种fill cacheline的过程适用于不同的情况,第一种适用于写数据不是整个cacheLine大小,由于和内存交互的最小单元是cacheLine,所以只能先读整个cacheLine,这个过程称为读改写

显然第二种就属于完全替换整个cacheLine的情况,当然完全替换整个cacheLine也可以采用第一种方式。

必须要分清的是read trans miss对应的是read allocate;而write trans miss对应的是write allocate,即使write miss后allocate的cacheLine的fill可能需要从内存中读数据。

2.cache的读策略与read allocate

cache 的writeback,CPU及处理器,存储及内存,arm开发,缓存

上表是ArmV8架构手册给出的memType及mem属性,在cacheability中cacheable为何只有write-Through Cacheable和Write-Back Cacheable而没有提到read的属性呢?

我们在说write-Through和write-back cache的时候,并不是说该cache不能支持读trans,而是因为默认情况下write-through和write-back的cache的读策略都是一样的。

对于cacheable的trans,读首先要在cache中查找

  • 如果hit,那么就得到所需的数据
  • 如果miss就去内存中读取

在miss后读取内存的过程中,对读回的数据处理又分了两类

  • read allocate :就是将读回的数据分配一个cacheLine存储在cache中
  • read non-allocate:读回的数据直接给master使用,而不在cache中缓存

而默认情况下都是使用read allocate的cache【无论是write-back还是write-through】

3.cache的写策略与write allocate

常用的cache写策略是write-back和write-through,Arm目前也支持这两种回写策略,还有其他的策略不在这里体现。

既然是cacheable的写trans,首先到cache中查找,若:

Hit时:

write-through:将写数据更新到cacheLine,同时将该Dirty的cacheLine写到内存中

write-back:直接将数据更新到cacheLine,并不立即写到内存中去,在该cacheLine被逐出cache时,写到内存中。

miss时,按照allocate分为两种情况:

write allocate :此时在cache中分配一个cacheLine(fill cacheLine过程见本文第一章),然后按照hit的情况,分write-back和write-through回写数据

write non-allocate:此时无论write-back还是write-through都是直接将数据写往内存中。

ARM的cache和mem零散记录(属性)-CSDN博客这边博客中提到的write stream mode就是典型的使用write non-allocate的场景。文章来源地址https://www.toymoban.com/news/detail-851944.html

到了这里,关于cache读写策略(write-back/through)与分配策略(allocate)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++ 具名要求-全库范围的概念 -包含分配信息的类类型(Allocator)

    此页面中列出的具名要求,是 C++ 标准的规范性文本中使用的具名要求,用于定义标准库的期待。 某些具名要求在 C++20 中正在以概念语言特性进行形式化。在那之前,确保以满足这些要求的模板实参实例化标准库模板是程序员的重担。若不这么做,则可能导致非常复杂的编译

    2024年02月02日
    浏览(49)
  • 《Cache-Aided MEC for IoT: Resource Allocation Using Deep Graph Reinforcement Learning》阅读笔记

    MEC使能的IoT能够解决物联网中时延敏感/计算敏感服务的需要 提出cache-aided MEC卸载框架,允许用户将计算任务卸载到边缘服务器上。 该框架的目标是最小化计算卸载和资源分类配的系统时延,将系统建模为部分可观测马尔可夫过程的多智能体决策问题。 提出基于深度图卷积强

    2024年02月02日
    浏览(45)
  • 深入理解 slab cache 内存分配全链路实现

    本文源码部分基于内核 5.4 版本讨论 在经过上篇文章 《从内核源码看 slab 内存池的创建初始化流程》 的介绍之后,我们最终得到下面这幅 slab cache 的完整架构图: 本文笔者将带大家继续从内核源码的角度继续拆解 slab cache 的实现细节,接下来笔者会基于上面这幅 slab cache 完

    2024年02月02日
    浏览(50)
  • 简述Spring Cache缓存策略

    Spring框架提供了一种名为Spring Cache的缓存策略。Spring Cache是一种抽象层,它提供了一种方便的方式来管理缓存,并与Spring应用程序中的各种缓存实现(如EhCache、Guava、Caffeine等)集成。 Spring Cache使用注解(如@Cacheable、@CachePut、@CacheEvict等)来描述与缓存相关的操作。这些注解

    2024年02月10日
    浏览(51)
  • cache教程1.LRU 缓存淘汰策略

    这一节实现LRU算法,要理解明白其使用的数据结构。 Cache的缓存全部存储在内存中,内存是有限的,因此不可能无限制地添加数据。当占用内存超过了给定的内存大小时候,就需要从缓存中移除一条或多条数据了。我们肯定希望尽可能移除“没用”的数据,那如何判定数据“

    2024年02月04日
    浏览(47)
  • 【ElasticSearch】分片分配策略详解(设计目标&执行策略)

    集群由多个节点组成,每个节点上有多个索引 Elasticsearch 索引实际上只是一个或多个物理分片的逻辑分组,其中每个分片实际上是一个独立的索引。分片上的段文件是实际存储的数据。分为主、副,索引中主分片的数量在创建索引时是固定的,但副本分片的数量可以随时更改

    2024年04月27日
    浏览(39)
  • Spring Cache:提高应用性能的策略和技巧

    🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页 ——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文并茂🦖生动形象🐅简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》 🐾 学会IDEA常用操作,工作效率翻倍~💐 🌊 《100天精通Golang(基础

    2024年02月09日
    浏览(48)
  • kafka分区分配策略

    现有主流消息中间件都是生产者-消费者模型,主要角色都是:Producer - Broker - Consumer,上手起来非常简单,但仍有需要知识点需要我们关注,才能避免一些错误的使用情况,或者使用起来更加高效,例如本篇要讲的kafka分区分配策略。 在开始前我们先简单回顾一下kafka消息存储

    2024年02月16日
    浏览(44)
  • JVM的故事—— 内存分配策略

    堆内存有新生代和老年代,新生代中有一个Eden区和一个Survivor区(from space或者to space)。当有新的对象分配时,会优先分配在Eden区。当Eden区空间不足分配给新对象时,会进行一次minor GC,回收完没有引用的对象后,先考虑把一些Eden区的对象放到Survivor区,如果放不下,就放到老

    2024年02月10日
    浏览(42)
  • 目标检测正负样本分配策略----ATSS

    一、ATSS 参考:https://blog.csdn.net/xuzz_498100208/article/details/110355048 https://zhuanlan.zhihu.com/p/411659547 作者提出了一种自适应的选取正样本的方法,具体方法如下: 1.对于每个输出的检测层,选计算每个anchor的中心点和目标的中心点的L2距离,选取K(mmdetection的topK是9)个anchor中心点离

    2024年02月02日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包