I thought I'd post a short blog post about commonly asked questions on AMBA 4 ACE and system coherency.
What does ACE mean?
ACE is the "AXI Coherency Extensions" introduced with the AMBA 4 specification released in 2011. For those of you thinking "What's AXI?" it's an on-chip bus standard used to define the interface and signalling to connect processors, interconnect, memory controllers to make an SoC.
Why?
ACE allows processors and systems to share memory in a more efficient way called "hardware coherency". Before hardware coherency systems had to rely on software coherency which means that the application, drivers and operating system must carefully manage the sharing of any data between the processor and other system hardware like DMA, graphics and IO interfaces. This software coherency consists of carefully timed cache cleaning, maintenance and invalidations. This cache cleaning takes time and effort (cache contents need to be written out to main memory, DDR), and any mistakes can be very difficult to debug (sometimes data is just in the wrong place and it's not obvious why).
Hardware coherency removes the software challenges, and in fact makes sharing transparent to the application. Hardware coherency is a critical component to @big.LITTLE processing and allows the big and LITTLE processor clusters to see the same view of memory, and run the same operating system. Processes and applications can switch between the big and LITTLE cores as demand requires.
3rd Party Support?
AMBA 4 ACE is an open standard, this means it's freely available to download from the ARM website. Of course there's an ecosystem of EDA companies out there supporting this new standard including Cadence, Jasper, Mentor and Synopsys.
Which Processors?
The latest @Cortex processors all support AMBA 4 ACE, these include the big little pairs: ARMv7 Cortex-A15 & Cortex-A7, and the ARMv8 Cortex-A57 & Cortex-A53. While these processors will be used in big.LITTLE applications we'll also see them used in enterprise applications like networking and servers where hardware coherency is a must have for high performane interfaces like PCI Express, Ethernet and USB.
How do I connect 'ACE' components?
The ARM CoreLink CCI-400 Cache Coherent Interconnect is the first product to market to support AMBA 4 ACE. First released in 2011, CCI-400 has been licensed by over 20 ARM partners and you will see many big.LITTLE products announced during 2013. For those not familiar with SoC architecture, the 'interconnect' is the glue that connects all the building blocks that make up an SoC like Cortex processors, Mali graphics and CoreLink memory controllers.
Any more questions?
Please ask!
Thanks a lot!