本文章介绍ARM Cortex-A57和A53处理器的MMU(内存管理单元)架构特点及工作原理,探讨其在多核异构计算中的应用优势。
### ARM Cortex-A57 和 A53 的 MMU:深入解析内存管理单元
#### 内存管理单元(MMU)概述
ARM Cortex-A57 和 A53 处理器中的内存管理单元(MMU)是处理器架构中至关重要的一部分,负责处理虚拟地址到物理地址的转换。其主要功能包括读取存储在内存中的翻译表、维护转换旁路缓冲器(TLB),以及执行地址转换。
当 MMU 被启用时,所有由处理器核心发起的内存访问都需要经过 MMU 处理。MMU 首先尝试从 TLB 中查找缓存的转换结果;如果未找到,则进行表走查来完成地址转换。只有在地址转换完成后,才能继续执行缓存查找。
#### Cortex-A57 和 A53 的 TLB 架构
##### Cortex-A57 TLB 架构:
1. **I-side L1 TLB**:包含 48 个条目。
2. **D-side L1 TLB**:包含 32 个条目。
3. **Unified L2 TLB**:包含 1024 个条目。
4. **Intermediate Table Walk Caches**:用于加速表走查过程。
##### Cortex-A53 TLB 架构:
1. **I-side L1 TLB**:包含 10 个条目。
2. **D-side L1 TLB**:包含 10 个条目。
3. **Unified L2 TLB**:包含 512 个条目。
4. **64 Entry Table Walk and IPA Caches**:用于加速表走查过程。
在 Cortex-A57 和 A53 中,所有的 TLB 条目都带有虚拟机标识符(VMID),这消除了在交换不同的来宾操作系统时需要刷新 TLB 的需求。对于非全局 TLB 条目,它们还带有应用空间标识符(ASID),使得在上下文切换时无需刷新 TLB。
需要注意的是,在 Cortex-A57 和 A53 中不支持 TLB 锁定功能。TLB 存储的是最终的页面表走查结果及其属性;如果是二级翻译,则存储第二级的结果,若未使用二级翻译则存储第一级的结果。
#### 物理地址的形成
在 MMU 中,虚拟地址由处理器核心发出。虚拟地址最高位用于识别正在访问的块,并索引相应的翻译表。最低位给出该段内的偏移量。MMU 将从块表项中获取物理地址基址与原始地址中的低位组合起来以生成物理地址。
例如:
- **虚拟地址**:64 位虚拟地址由处理器核心发出。
- **VA base**:高位用于索引翻译表,识别所访问的块。
- **Offset**:低位给出该段内的偏移量。
- **PA base**:MMU 通过表走查获取物理地址基址。
- **Physical Address**:MMU 组合物理地址基址和原始地址中的低位偏移量形成最终的物理地址。
ARM Cortex-A57 和 A53 的 MMU 通过复杂的硬件机制实现了高效的地址翻译功能,其内部结构与工作机制的设计为现代高性能计算提供了强大的支持。无论是对于开发者还是研究者来说,了解这些细节都是十分必要的。