CPU、Cache以及DDR之间访问关系

笔者介绍一下CPU、Cache及DDR之间的数据流向。

俗话说,开局一张图,下面全靠讲。

  1. Cache是一个介于CPU以及DDR(DRAM)之间的一个高速缓存(一般好像是SRAM),在处理器内部,读写速度较DDR高,但是低于CPU的速度。假如没有Cache,直接访问DDR,CPU的速度远远高于DDR,那么CPU就需要等待DDR的数据到来,才能做其他事情,就会造成CPU使用效率较低

  2. 使用Cache之后,提前将DDR的数据缓存到Cache中,如果恰好CPU访问DDR的数据在Cache中有,那么CPU拿到数据的时间将更短,处理效率将大大增加。如何提高Cache的命中率那是另外一回事,不在本文的讨论中。

  3. 但是同时也会造成一致性问题,即CPU的访问的数据(Cache)与DDR的数据没有同步,造成执行错误。

  4. 假设一种真实情况,CPU要访问DDR中的一块数据,那么这块数据会放在Cache中,之后DMA控制器直接将外设的数据放在DDR中,更新了刚刚的那一块CPU要访问的数据,此时CPU要获取数据进行处理,还是拿着Cache中未更新的数据,就会造成一致性问题。
    在这里插入图片描述

  5. 如何避免这种问题呢?将Cache中的数据清空,或者将DDR与Cache的数据同步,即可解决一致性问题,所以在使用外设的时候,假如有Cache的话,一定要注意这个问题。
    在这里插入图片描述

  6. 通过这两张图,我们来认识一下cache与volatile。

    • volatile 能保证数据从内存中读取,不使用寄存器当中的数据,其次,虽然从内存中读取,但是不能用于线程同步,需要用互斥量或者mutex去同步。(比如同时增加两次,中间被其他线程穿插一次,那么异常了)
    • cpu 如果从内存中读数据,cache如果命中,则从cache中读取,不去内存中读取。
    • 总之,如果内存是cache able,意思是这块内存被映射到cache中了,数据可能会被命中。如果是uncach eable的,则没有cache会映射到这里,volatile修饰时,则会从内存中读取,同时也会防止优化,是有作用的。
  • 12
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
CPU缓存代理是一种位于CPU内部的硬件组件,用于优化计算机处理数据的性能。 在计算机体系结构中,CPU缓存代理是位于CPU和内存之间的缓存层次结构中的一个组件。它的作用是在CPU执行指令时提供快速访问数据。CPU缓存代理通过将最常用的数据存储在靠近CPU的高速缓存内,可以减少内存访问的延迟时间。 CPU缓存代理主要包括三级缓存:L1缓存、L2缓存和L3缓存。L1缓存位于CPU内部,与CPU核心紧密连接,速度最快,容量最小。L2缓存位于L1缓存之后,速度稍慢,容量较大。L3缓存位于CPU芯片上,容量最大,速度相对较慢。 CPU缓存代理的工作原理是通过缓存替换算法和缓存一致性协议来管理缓存中的数据。缓存替换算法决定了何时将新数据加载到缓存中,以及何时将旧数据替换出去。缓存一致性协议则保证了多核CPU中各个核心之间访问共享内存的一致性。 CPU缓存代理的存在可以显著提升计算机的性能。由于缓存可以更快速地访问数据,CPU不需要每次都从内存中读取数据,而是直接从缓存中读取,从而减少了内存的访问延迟。此外,CPU缓存代理还可以减少对内存总线的压力,提高数据传输效率。 总之,CPU缓存代理是一个重要的硬件组件,可以提升计算机处理数据的性能。它通过在CPU和内存之间提供高速缓存来减少内存访问的延迟,并通过缓存替换算法和缓存一致性协议来管理缓存中的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张一西

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值