寄存器、内存和Cache的关系

RAM-memory

即内存,是用于存放数据的单元。其作用是用于暂时存放CPU中的运算数据。

Register

寄存器是CPU的内部组成单元,是CPU运算时取指令和数据的地方,速度很快,寄存器可以用来暂存指令、数据和地址。在CPU中,通常有通用寄存器,如指令寄存器IR;特殊功能寄存器,如程序计数器PC、sp等

Cache
Cache :即高速缓冲存储器,是位于CPU与主内存间的一种容量较小但速度很高的存储器。由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。

流程:
CPU <— > 寄存器<— > 缓存<— >内存

CPU要取寄存器AX的值,只需要一步:把AX给我拿来,AX就拿来了。
CPU要取L1 cache的某个值,需要1-3步(或者更多):把某某cache行锁住,把某个数据拿来,解锁,如果没锁住就慢了。
CPU要取L2 cache的某个值,先要到L1 cache里取,L1说,我没有,在L2里,L2开始加锁,加锁以后,把L2里的数据复制到L1,再执行读L1的过程,上面的3步,再解锁。
CPU取L3 cache的也是一样,只不过先由L3复制到L2,从L2复制到L1,从L1到CPU。
CPU取内存则最复杂:通知内存控制器占用总线带宽,通知内存加锁,发起内存读请求,等待回应,回应数据保存到L3(如果没有就到L2),再从L3/2到L1,再从L1到CPU,之后解除总线锁定。

总结:大致来说数据是通过内存-Cache-寄存器,Cache缓存则是为了弥补CPU与内存之间运算速度的差异而设置的的部件。

### 英飞凌 Cache 与 Non-Cache 的区别及应用场景 #### 缓存(Cache)的概念 缓存在计算机体系结构中是一种高速存储器,用于临时保存频繁访问的数据副本。通过减少处理器等待时间来提高系统的性能。在英飞凌的产品线中,尤其是基于TriCore架构的微控制器(如AURIX系列),缓存的设计直接影响到程序执行效率数据处理速度。 对于 **Cached PFLASH** **Non-Cached PFLASH**,它们的主要差异体现在以下几个方面: - **性能表现**: Cached PFLASH 使用了指令缓存 (PCache) 或者数据缓存 (DCache),能够显著提升代码运行的速度以及降低总线负载[^1]。相比之下, Non-Cached PFLASH 不具备这种加速功能,在每次读取操作时都需要直接从闪存获取数据,这会增加延迟并可能影响实时性需求的应用场景。 - **功耗考量**: 虽然启用缓存可以带来更好的性能体验,但它同时也意味着更高的能耗水平因为维持这些额外层次内存所需电力资源更多一些;而非缓冲模式下则相对节省能源消耗[^2]. - **可靠性因素**: 当涉及到某些特殊情况下比如掉电保护或者需要非常精确控制每一步骤完成情况之时,则推荐采用无缓存方式工作以确保每一次交互都是最新最真实的状态反映出来而不是依赖于之前储存下来的内容版本[^3]. #### 配置方法概述 为了实现上述不同特性的切换,在实际开发过程中可以通过修改特定硬件寄存器字段来进行设置: ```c // 启用/禁用 PCache PCON0.B.PCBYP = 0; // 设置为0表示开启PCache // 启用/禁用 DCache DCON0.B.DCBYP = 0; // 设置为0表示开启DCache ``` 以上代码片段展示了如何利用 TriCore 架构下的寄存器 `PCON0` `DCON0` 来分别管理指令级与数据级别的缓存行为。 #### 应用场景分析 根据不同类型的项目要求选择合适的方案至关重要: - 对于那些追求极致效能并且允许一定程度上牺牲部分稳定性成本预算较高的场合来说,“带缓存”的选项无疑是最优解之一; - 反之如果目标侧重于简化设计流程或是面对极端环境条件必须保障绝对可靠度的话那么就应该考虑采取“不使用缓存”的策略从而规避潜在风险同时降低成本开销。 总之,在具体实施前应当仔细权衡各方面利弊关系再做决定才能达到最佳效果。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值