首页 / 资讯中心 / 文章详情

【嵌入式学习笔记】ARM的总线和流水线

【嵌入式学习笔记】ARM的总线和流水线 ★ FEATURED ARTICLE
ARM总线AMBAAdvanced Microcontroller Bus Architecture高级微控制器总线架构AMBA 不是单一总线而是一个分层的协议家族主要包含这三种AXIAdvanced eXtensible Interface高级可扩展接口目前的高性能主力。特点是读写通道分离可以同时读和写支持乱序完成、突发传输。它连接的是对带宽要求最高的部件比如 CPU 核心、DDR 控制器、高速 DMA。AHBAdvanced High-performance Bus高级高性能总线定位是中高速、低延迟。主要连接处理器、片上 RAM、DMA 控制器这些需要快速响应的模块。它在一些较老的 ARM 设计比如 Cortex-M 系列里非常常见。APBAdvanced Peripheral Bus高级外设总线这是低速、低功耗的“小路”。专门用来连接那些对速度要求不高的外设比如 UART、I2C、SPI、定时器、GPIO。它通过“桥”挂在 AHB 或 AXI 上把低速设备隔离出去避免拖慢主干道。典型的AMBA系统图AM64x/AM243x多级分层架构它不是一根大总线而是由多层交换机SCR组成的树状网络。高层负责高带宽底层接入低速外设实现了流量的物理隔离。确定性低延迟路径为了工业实时性芯片内为 R5F、PRU 等实时核心规划了专用低延迟路径。这样即使 A53 在疯狂跑 Linux 任务也不会干扰到 R5F 精确控制电机所需的实时数据流。可配置的内存分区芯片内部的 2MB SRAM带 ECC可以灵活切分。A53 独占 DDR 跑 Linux内部 SRAM 则按需分给多个 R5F 核独立或共享使用从物理上隔离了不同核心的内存访问。ARM流水线流水线技术通过多个功能部件并行工作来缩短程序执行的时间提高处理器核的效率和吞吐率从而成为微处理器设计中最为重要的技术之一。ARM7三级流水线冯诺依曼结构采用了典型的三级流水线。取指 - 译码 - 执行指令-----MOV取指译码执行--ADD-取指译码执行-SUB--取指译码执行时钟周期--T1T2T3ARM9五级流水线哈佛结构采用五级流水线。取指 IF- 译码ID - 执行EX - 访存MEM - 回写WB但是五级流水线会有其缺点即数据冒险Data Hazard以下面两条指令为例ADD R0, R1, R2 ; R0 R1 R2写 R0SUB R3, R0, R4 ; R3 R0 - R4读 R0SUB需要读R0但R0是ADD的结果。问题在于ADD在执行阶段才算完R0的新值SUB在译码阶段就要读R0当 SUB 进入 译码 阶段时ADD 还在 执行 阶段R0 的新值还没写回寄存器堆。SUB 读到的还是旧的 R0结果就错了。ARM118级流水线预取 - 预取 - 发送 - 译码 - 转换 - 执行 - 访存 - 写入AM64x/AM243xCortex-A538级顺序双发射流水线ARMv8-A 架构整数流水线为 8 级NEON 和浮点处理会在此基础上多出 2 级。Cortex-R5F8 级流水线。Cortex-M4F3 级流水线取指、译码、执行。流水线操作当指令都是单周期执行时三级流水线PC的值超前预取了两条指令因此当发生异常时LR的值如下异常或入口返回指令当前LR的值BL子程序调用MOV PC,R14PC 4SWI软中断MOVS PC,R14_svcPC 4未定义MOVS PC,R14_undPC 4预取中止MOVS PC,R14_abt,#4PC 8快速中断MOVS PC,R14_fiq,#4PC 8中断MOVS PC,R14_irq,#4PC 8数据终止MOVS PC,R14_abt,#8PC 8复位--
阅读完成 · 觉得有帮助?
咨询建站