ARM Cache
ARM Cache分为指令缓存、数据缓存和统一缓存,采用直接映射、组相联或全相联方式映射内存地址。物理缓存(PIPT)使用物理地址索引,虚拟缓存(VIVT)使用虚拟地址但存在别名和同名问题。VIPT缓存以虚拟地址的页内偏移作为索引、物理地址作为标签,可避免别名问题(需索引位不超过页内偏移)。多级缓存(如L1、L2、L3)按层级处理数据请求,减少访问延迟。
ARM Memory Management
ARM内存管理采用虚拟地址到物理地址的映射机制,通过多级页表(如AArch64的四级页表)实现按需映射,减少内存浪费。页表描述符支持大页块映射和细粒度页面映射,并包含共享域等属性,确保访问权限和内存一致性。
ARM Interrupt Controller
ARM核心通过nIRQ和nFIQ管脚处理中断,PSTATE的I、F位控制屏蔽。树莓派4B支持GIC-400和Legacy Interrupt两种方式。文章重点介绍Legacy Interrupt:中断源包括ARM Core(generic timer、PMU等)、ARM_LOCAL、ARMC和VideoCore,通过层次化状态寄存器读取中断。以EL1 Non-secure generic time
ARM Exception Model
ARM64异常模型定义了EL0到EL3四个异常等级,异常分为同步异常(如系统调用、MMU异常)和异步异常(如IRQ、FIQ、SError)。异常发生时,硬件自动保存状态到SPSR_ELx和ELR_ELx,更新ESR_ELx,并跳转到异常向量表;操作系统需设置向量表并处理异常。异常返回通过eret指令恢复PC和处理器状态。异常路由规则由HCR和SCR寄存器配置,决定异常在哪个等级处理。
AArch64 ASM
这篇博客介绍了AArch64(ARM64)汇编语言的基础知识,重点讲解了ARM常用寄存器(如栈指针SP)的特点,以及各类指令的分类和用法,包括加载与存储(LDR/STR/LDP/STP及其变种)、算术与移位(ADD/SUB/ADC/SBC/CMP)、位段操作(BFI/UBFX/SBFX)和乘除法指令等,并通过多个练习示例展示了指令的具体应用和注意点(如对齐、伪指令与内存访问指令的区别)。
AArch64 ASM Book
AArch64架构中指令固定为4字节,指针为8字节(有效地址通常为48至52位)。寄存器分为x(64位整数/指针)、w(32位整数)、d(64位浮点)、s(32位浮点)等类型,其中x29为栈帧指针,x30为链接寄存器。浮点与SIMD寄存器使用v(物理寄存器)和q(别名),支持16字节宽度的操作。函数返回值过大时通过间接结果位置传递。
