1. ARM720T处理器架构概述
ARM720T是一款经典的ARM7系列32位RISC处理器,采用冯·诺依曼架构设计,集成了8KB统一指令数据缓存(IDC)、内存管理单元(MMU)和写缓冲区(Write Buffer)。这款处理器在嵌入式系统领域有着广泛应用,其独特的内存子系统设计使其在实时性和性能之间取得了良好平衡。
提示:ARM720T的CP15系统控制协处理器提供了对缓存、MMU等核心组件的编程接口,开发者需要通过MRC/MCR指令在特权模式下访问这些功能。
处理器的主要技术特性包括:
- 工作频率:最高可达100MHz(取决于具体工艺)
- 总线接口:AMBA AHB(Advanced High-performance Bus)
- 缓存策略:写通(Write-through)配合读缺失分配
- 替换算法:随机替换
- 异常处理:支持高低两种异常向量表配置
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 缓存系统深度解析
2.1 IDC缓存组织结构
ARM720T的8KB统一缓存采用四路组相联结构,具体参数如下:
- 总容量:8KB(8192字节)
- 组织结构:4个存储体(bank)
- 每存储体:64个缓存行(line)
- 每行大小:8个字(32字节)
- 替换算法:伪随机替换
缓存行的填充总是以整行为单位进行。当发生缓存缺失时,处理器会从外部存储器读取完整的32字节数据块填充到缓存中。这种设计基于局部性原理,能够有效减少后续访问的延迟。
2.1.1 缓存使能流程
启用缓存需要严格遵循以下步骤:
- 首先确保MMU已启用(CP15寄存器1的bit0)
- 设置CP15寄存器1的bit2启用缓存
- 可通过单条写指令同时启用MMU和缓存
assembly复制; 示例:启用MMU和缓存的汇编代码
MRC p15, 0, r0, c1, c0, 0 ; 读取CP15寄存器1到r0
ORR r0, r0, #0x5 ; 设置bit0(MMU)和bit2(Cache)
MCR p15, 0, r0, c1, c0, 0 ; 写回CP15寄存器1
2.2 缓存一致性维护
由于ARM720T缓存使用虚拟地址索引,当MMU页表映射发生变化时,必须手动维护缓存一致性。主要场景包括:
- 修改页表属性:当改变某个内存区域的缓存属性(C位)时
- 地址重映射:当虚拟地址到物理地址的映射关系发生变化时
- 上下文切换:不同进程可能使用相同的虚拟地址访问不同物理内存
维护操作通过CP15寄存器7实现:
assembly复制; 使整个缓存无效的指令
MCR p15, 0, <Rd>, c7, c7, 0 ; Rd内容无关,通常写0
重要提示:缓存无效化操作会立即生效,但后续两条指令仍可能从缓存中取指。建议在无效化操作后添加NOP指令或跳转指令。
2.3 特殊访问场景处理
2.3.1 原子交换指令(SWP)
对于SWP指令(原子读-修改-写操作),ARM720T采用特殊处理:
- 读阶段:强制访问外部内存,忽略缓存内容
- 写阶段:正常写入,若数据在缓存中则更新缓存
- 总线表现:通过HLOCK信号保持总线占有
2.3.2 双映射区域
当同一物理地址被映射到多个虚拟地址时:
- 必须将所有相关虚拟地址标记为非缓存(Uncachable)
- 否则会导致缓存一致性问题,因为不同虚拟地址在缓存中有独立条目
3. 内存管理单元(MMU)详解
3.1 MMU配置寄存器
ARM720T的MMU通过CP15寄存器控制,主要寄存器包括:
| 寄存器 | 名称 | 功能描述 |
|---|---|---|
| 1 | 控制寄存器 | 控制MMU、缓存、写缓冲区等全局开关 |
| 2 | 页表基址寄存器 | 存储一级页表的物理基地址 |
| 3 | 域访问控制寄存器 | 定义16个域的访问权限 |
| 5 | 故障状态寄存器 | 记录最后一次内存访问错误的详细信息 |
| 6 | 故障地址寄存器 | 记录触发故障的虚拟地址 |
