Fork me on GitHub
侧边栏

随笔分类 -  Memory Management

1 2 3 4 5 ··· 10 下一页
摘要:Patch https://lore.kernel.org/all/1498459987-24562-1-git-send-email-minchan@kernel.org/ zRAM通过压缩pages来节省内存是非常有用的,但是有时候工作负载会变化并且系统可能有大量的不可压缩的pages,那么这些 阅读全文
posted @ 2025-10-11 11:31 yooooooo 阅读(100) 评论(0) 推荐(0)
摘要:1.1 ARM MMU 1.1.1 虚拟地址位宽配置 64 位虚拟地址中,并不是所有位都用上,除了高 16 位用于区分内核空间和用户空间的虚拟地址外,虚拟地址的有效位的配置可以是:36, 39, 42, 47。在代码中,可以看到寄存器 TCR_EL1, Translation Control Reg 阅读全文
posted @ 2025-09-28 12:04 yooooooo 阅读(102) 评论(0) 推荐(0)
摘要:Cache Maintenance registers and instructions Armv8/v9 里定义的Cache的管理的操作有三种: Invalidate : 整个高速缓存或者某个高速缓存行。高速缓存上的数据会被丢弃。 Clean : 整个高速缓存或者某个高速缓存行。相应的高速缓存行会 阅读全文
posted @ 2025-09-13 14:23 yooooooo 阅读(46) 评论(0) 推荐(0)
摘要:ARM Cache Miss 统计 在ARMv8/v9架构中,缓存未命中(Cache Miss)的统计对于性能调优和系统分析至关重要。缓存未命中意味着处理器尝试从缓存中读取数据时没有找到,因此不得不从更低速的存储(如L2缓存或主内存)中加载数据,这会导致延迟增加和性能下降。理解和分析缓存未命中有助于 阅读全文
posted @ 2025-09-13 10:00 yooooooo 阅读(63) 评论(0) 推荐(0)
摘要:Cache Tag 数据读取 在处理器中,缓存是一种快速存储资源,用于减少访问主内存时的延迟。缓存通过存储主内存中经常访问的数据来实现这一点。为了有效地管理这些数据,缓存被组织成行(lines)或块(blocks),每个行或块包含了一段连续的内存数据。每个缓存行都与一个缓存标签(cache tag) 阅读全文
posted @ 2025-09-08 08:00 yooooooo 阅读(36) 评论(0) 推荐(0)
摘要:Cache Tag 和 物理地址 在ARM架构中,缓存(Cache)的设计是提高数据访问效率的关键机制。每个缓存行(Cache Line)都有一个与之关联的标签( Tag ),该 标签记录了与该行相关联的外部存储器的物理地址 。缓存行的大小是由实现定义的(implementation defined 阅读全文
posted @ 2025-09-06 20:12 yooooooo 阅读(94) 评论(0) 推荐(0)
摘要:Direct access to internal memory 在ARMv8架构中,缓存(Cache)是用来加速数据访问的关键组件,它利用了程序执行中的局部性原理来提高性能。缓存中的每一行(Cache Line)通常包含了两个主要部分:实际的数据和一个标记(Tag)。这个标记用来标识存储在缓存行中 阅读全文
posted @ 2025-08-15 20:12 yooooooo 阅读(97) 评论(0) 推荐(0)
摘要:Cache 常用寄存器 ARM Cache 常用到寄存器有以下几个: CSSELR, Cache Size Selection Register CLIDR, Cache Level ID Register CTR, Cache Type Register CCSIDR, Current Cache 阅读全文
posted @ 2025-08-04 14:01 yooooooo 阅读(94) 评论(2) 推荐(0)
摘要:1. cache的组织 L1 cache 分为单独的 instruction cache(ICache)和 data cache(DCache)。 L1 cache是CPU私有的,每个CPU都有一个L1 cache。 一个cluster 内的所有CPU共享一个L2 cache,L2 cache不区分 阅读全文
posted @ 2025-07-21 17:08 yooooooo 阅读(310) 评论(0) 推荐(0)
摘要:圈里流传着一句话“珍爱生命,远离屏障”,这足以说明内存屏障是一个相当晦涩和难以准确把握的东西。使用过弱的屏障,会导致软件不稳定。使用过强的屏障,会引起性能问题。所以工程上,追求恰到好处、不偏不倚的屏障。本文力求用最浅显的语言,讲清楚内存屏障最晦涩的道理,本文也会给出五个工程案例,这些案例皆见于开源的 阅读全文
posted @ 2025-07-19 18:21 yooooooo 阅读(70) 评论(0) 推荐(0)
摘要:CPU 的 cache line 和 cache 组(set) 是理解 缓存结构(cache architecture) 的两个关键概念,它们之间有密切的关系。下面我来详细解释它们的联系: 一、基本概念回顾 1. Cache Line(缓存行) 是 cache 中数据的最小传输和存储单位。 通常大小 阅读全文
posted @ 2025-06-27 17:58 yooooooo 阅读(175) 评论(0) 推荐(0)
摘要:1.1 Cache 之乱序执行 程序里面的每行代码的执行顺序,有可能会被编译器和cpu根据某种策略,给打乱掉,目的是为了性能的提升,让指令的执行能够尽可能的并行起来。 知道指令的乱序策略很重要,原因是这样我们就能够通过barrier(内存屏障)等指令,在正确的位置告诉cpu或者是编译器,这里我可以接 阅读全文
posted @ 2025-06-26 17:59 yooooooo 阅读(188) 评论(0) 推荐(0)
摘要:PoP 及 PoDP Cache PoDP 点对深度持久性(Point of Deep Persistence, PoDP)是内存系统中的一个点,在该点达到的任何写操作即使在系统供电瞬时硬件故障的情况下也是持久的。这意味着,一旦数据写入操作达到 PoDP,即使发生断电或其他硬件故障,这些数据也不会丢 阅读全文
posted @ 2025-06-26 10:34 yooooooo 阅读(51) 评论(0) 推荐(0)
摘要:Cache Coherence 背景 所谓的 Cache 一致性问题, 主要指的是由于 Cache 存在时,当在有多个 Master(典型的如 MCU 的 Core, DMA 、 PCIE 、I2C2APB 等)访问同一块内存时, 由于数据会缓存在 Cache 中而没有更新实际的物理内存,导致的问题 阅读全文
posted @ 2025-06-26 10:18 yooooooo 阅读(210) 评论(0) 推荐(0)
摘要:Cache 组相联映射 ARM核心的主要缓存总是使用一组多路组相连缓存实现的。这显著降低了与直接映射缓存相比出现的缓存抖动(Cache Thrashing)的可能性,从而提高了程序执行速度并使执行更加具有确定性。这种缓存组织方式以增加硬件复杂性和因每个周期比较多个标签而略增加功耗为代价。 直接映射和 阅读全文
posted @ 2025-06-25 17:20 yooooooo 阅读(189) 评论(0) 推荐(0)
摘要:Cache 全相连(Fully Associative) 介绍: 在全相连缓存中, 任何内存地址都可以缓存在 Cache 的任何位置 。在查找数据时,缓存会并行检查所有的缓存行,以确定所需数据是否已缓存。这种组织结构的优点是高命中率, 但缺点是查找过程需要更复杂的硬件 ,导致成本和功耗增加。 全相联 阅读全文
posted @ 2025-06-25 14:14 yooooooo 阅读(86) 评论(0) 推荐(0)
摘要:ARM Cache组织形式 在ARM体系结构中,缓存(Cache)是一种关键的硬件机制,用于减少处理器访问内存所需的时间。缓存可以根据其组织结构分为三种主要类型:全相连(Fully Associative),直接映射(Direct Mapped),和多路组相连(Set Associative)。每种 阅读全文
posted @ 2025-06-25 14:04 yooooooo 阅读(103) 评论(0) 推荐(0)
摘要:Cache 与 MPU 1.1. Cortex-M MPU 简介 MPU 全称"Memory Protection Unit",中文叫“存储保护单元”,它是 Cortex-M 处理器内部的一个模块(注意:并不是所有 Cortex-M 版本都支持 MPU,并且在一些支持 MPU 的 Cortex-M 阅读全文
posted @ 2025-06-24 14:30 yooooooo 阅读(170) 评论(0) 推荐(0)
摘要:Data Cache and Unified Cache 在 ARM架构中,缓存(Cache)的设计对于提高处理器性能和效率至关重要。缓存按照存储的数据类型和结构可以分为几种类型,其中最关键的区别在于数据缓存 (Data Cache) 和统一缓存 (Unified Cache)。这两种缓存的主要差异 阅读全文
posted @ 2025-06-24 10:59 yooooooo 阅读(73) 评论(0) 推荐(0)
摘要:DMA(直接内存访问)与IOMMU(输入输出内存管理单元)的结合主要体现在地址转换与内存访问控制上,两者的关系可以概括为以下几点: 解决设备寻址能力限制 某些设备(如旧版硬件)无法直接访问高于4GB的内存地址(即“高位缓冲区”)。此时IOMMU会通过在[0, 4GB)范围内分配一段物理地址(称为“D 阅读全文
posted @ 2025-06-15 09:33 yooooooo 阅读(244) 评论(0) 推荐(0)

1 2 3 4 5 ··· 10 下一页