AMBA总线阵营的强大超乎多数人的想象。AMBA总线是一个在SoC领域使用的事实上的标准。AMBA总线V1.0于1995年正式发布[122],用于SoC内部各个模块间的互联,支持多个主设备,支持芯片级别测试。在AMBA V1.0中定义了两条总线,ASB(Advanced System Bus)和APB(Advanced Peripheral Bus)。V1.0还定义了一个连接存储器的外部接口,这个外部接口可以用做测试。
ASB总线是一个快速总线接口,使用独立的地址数据总线,支持流水传送方式,支持多个主设备与从设备,采用集中译码和仲裁方式。ASB总线的主要作用是连接CPU,DMA引擎,内部存储器和一些快速外部设备。APB总线连接一些慢速设备,APB是ASB的Secondary Bus,两者的关系如图4所示。
图4 ASB与APB的组成结构[123]
从今天的技术上看,AMBA V1.0总线十分简陋,设计这样的总线标准甚至可以作为几个研究生的毕业论文。AMBA总线的最大优点是开放的架构,和因此带来的免费[123]。开放的总线标准使AMBA总线迅速普及,而且更易吸收整个半导体界的成果。
1999年AMBA总线更新到V2.0[124],增加了一个新的总线AHB(Advanced High-Performance Bus)。AHB总线取代了ASB在系统中的位置,使ASB进一步下移,增加了Split传送方式进一步提高了存储器读的效率,总线宽度最高可达128位。
2001年,ARM发布了AMBA V3.0总线规范,引入ATB(Advacned Trace Bus)和AXI(Advanced eXtensible Interface)总线。AXI总线的引入,使AMBA总线迈向新的台阶,性能已经可以与IBM的CoreConnect抗衡[126]。
AXI是一条现代总线。AXI总线分离了一个总线周期的地址阶段和数据阶段,更便于实现在现代总线中常用的Pipelining和Split技术。AXI总线进一步分离了总线通路,将AHB的单通路分解为Read Data,Read Address,Write Data,Write Address和Write Response共5个独立通路,进一步加速了对存储器的读写访问。
AXI总线接口逻辑设计较为复杂,与AHB总线相比多使用50%的资源。AXI的一次总线周期至少需要传送64字节的数据,而AHB总线是16字节,这也导致AXI总线的传送延时高于AHB总线[125]。AXI总线的目标不是用于替换AHB总线,在一个SoC中,AXI总线和AHB依然并存,只是AXI总线更接近ARM内核,AHB总线更贴近外部设备。
AMBA总线阵营规范了嵌入式领域的平台总线,日益壮大。2010年3月8日,ARM正式推出AMBA V4.0总线,引入了QoS机制,进一步增强了多层结构,将AXI总线细分为AXI4,AXI-Lite和AXI-Stream[127]。
这一切并不是AMBA V4.0最重要的更新。如同Nehalem内核最重要的变化并不是流水线,而是QPI互联结构[xv],在AMBA4总线中最值得注意的是片间互联总线CoreLink CCI[xvi](Cache Cohenrent Interconnect)架构。
CoreLink CCI架构使得多个SMP系统之间实现Cache共享一致性成为可能,Cortex A15也借此超越了用于嵌入式领域的PowerPC和其他多核MIPS[xvii]。在整个处理器总线阵营中只有IBM的CoreConnect和Intel的QPI可以与之抗衡。CoreLink的横空出世,使Cortex A15具备了和Intel的高端处理器Nehalem和Sandy Bridge抗衡的能力。在服务器领域,Cortex A15内核与Nehalem内核间的较量就是CoreLink和QPI之间的角逐。
AMBA总线标准提供的AXI,AHB,ASB,APB和ATB总线,不仅使用在ARM处理器系统中,MIPS和PowerPC处理器也开始使用AMBA总线。TI和Freescale的DSP也在使用AMBA总线。AMBA总线已经无孔不入,在整个嵌入式领域,没有可以向其挑战的对手[xviii]。
面对ARM内核,Intel并不畏惧,面对AMBA总线阵营,Intel只剩下无奈。可以预计在相当长的一段时间里,Intel无法推出一条能和AMBA总线抗衡的SoC平台总线。Intel只能暂时向AMBA总线示弱。
相关文章: