Home Architectures Cortex-M3 and Cortex-M0 Will Cortex-M soon be the highest selling core in the MCU market?
Will Cortex-M soon be the highest selling core in the MCU market?
After ARM launched the Cortex-M3 architecture late 2004, Luminary Micro (now Texas Instruments) designed the first Cortex-M3 based microcontroller. STMicroelecronics was the first major player to market in June 2007 with the extensive STM32 range. Since then, NXP with the LPC1000 series, Atmel with the SAM3 family, Energy Micro with an EFM32, Toshiba with TMPM3 series and many others have licensed the core.

The Cortex-M0, Cortex-M3 and Cortex-M4 cores could trigger a consolidation of the MCU market and reduce the number of competing architectures.

Why is this happening? Microcontroller vendors have traditionally competed against each other by offering a combination of features that were in some way superior to the competition in a particular niche market. A microcontroller feature set can be described in term of cost, power consumption, execution speed and peripheral set combined with the ecosystemto support any given software needs.

Historically it has been difficult to produce a single range of devices that offers good performance in all of these areas as cost is largely dictated by gate count and cost is the most important factor in high volume applications

Power consumption is a complex subject but typically vendors have reduced gate count and introduced clock gating, added internal oscillators for fast startup from sleep and more techniques in order to reduce power.

The original Cortex-M3 processor core has only 33,000 gates, the Cortex-M0 reduced this to 12k gates and the upgraded Cortex-M4 with 65k gates that include DSP instructions is still rather small compared to its performance. This fact combined with advanced low-power modes can dramatically reduce power consumption. The cores can operate from 0 to 120MHz in implementations currently available.

The processor instruction set is known as Thumb2. In the past, ARM processors could execute 32 bit ARM instructions or 16 bit Thumb instructions. The ARM instructions were more feature rich and hence enabled faster code execution but required more space. The Thumb2 instruction set is a combination of mostly 16 and some 32 bit instructions designed to give an optimum balance between execution speed and code size. With processor cores getting ever smaller, flash and SRAM requirements are increasingly dictating the final device cost.

The Thumb2 instruction set is a key characteristic of the Cortex-M3 and COrtex-M4 as it facilitates 32 bit execution speed with a flash requirement comparable to 16 bit designs. Some may question the description of the Cortex-M3 as a low-power processor.

Amazingly, Cortex-M3 microcontrollers are available for less than many legacy 8 and 16 bit parts. TI's marketing literature describes their Stellaris Cortex-M3 range as an entry into an ARM compatible roadmap from $1 to 1GHz. Given that the Cortex-M3 delivers 1.25DMIPS/MHz at such low cost, it's hard to imagine that the processor will fail to make significant inroads into the existing 8 and 16 bit markets. For those end users paying a premium for legacy microcontrollers in existing designs, they now have more reasons to migrate to a new device. Lower cost, higher performance and the scalability to add new connectivity and media features are one redesign away.

Silicon vendors have looked at Cortex-M3 and seen that to a certain extent they can have their cake and eat it. Low power consumption, high-speed execution, a rich peripheral set and low cost, in a single range of devices. This was an attractive proposition for the early adopters in a competitive marketplace, but when faced with the prospect of competing with Cortex-M3 many other vendors must have decided that the best option available was to hop on the bandwagon. With the Cortex-M4 announced in February 2010, ARM had major semiconductor vendors on board right from the start.

We've mentioned the obvious benefits of Cortex-M3 powered devices, but there are many others that are not so obvious. While Intel's dominance of the PC microprocessor market has served the market well, the deeply embedded market is a different animal. The market is very cost sensitive and for many reasons a higher level of integration is desirable.

A large number of competing silicon vendors almost guarantees that there will be a vendor somewhere that will offer a microcontroller perfectly tailored for your specific application. Given a choice, any design engineer would rather design in a component that can be sourced from multiple vendors. While Cortex-M3 devices from different vendors differ in many ways, the migration path from one vendor to another is undoubtedly easier than migrating between architectures. This gives end users great flexibility to change parts in order to take advantage of a cost or performance benefit.

Some of the ranges available, such as the LM3 from TI, the LPC1000 from NXP or the STM32, are so extensive that many end users could standardise on that single range and find that there is a component available for every application they have. In many ways, Cortex-M offers end users all of the benefits of standardisation while retaining the key benefit of choice.

Is this a win-win development for end users and silicon vendors? It's very hard to say at this stage. The Cortex-M3 puts tremendous power to choose in the hands of the end user and surely some MCU vendors are going to suffer as a result, even more so the vendors not offering COrtex based solutions. In the short term this is good news for the end user, but a microcontroller market where vendors cannot make money is no good for anyone in the long run. It will be very interesting to see how this aspect of convergence unfolds. As a user, keep in mind that lowest cost might not exactly indicate longest availability.

Migrating an existing design between architectures can be very costly as new compilers, debuggers, etc. are purchased for each developer. With Cortex-M3 you buy the development tools once and they are common to every silicon vendor's implementation. Over the lifetime of an end user's product range this can yield significant benefits in terms of developer productivity and tool costs. The tools that are available have a very large installed base. This results in the tools being of very high quality, more akin to PC software development tools than those typically used for embedded development. With more and more software finding its way into microcontrollers, this is a major benefit.

Any embedded developer will tell you that there can be many months between powering on a new design with lots of peripherals for the first time, and working on the added value part of your software, the application. Texas Instruments and ST have produced extensive internal peripheral libraries for their devices. TI with the Stellaris family might have the most extensive collection of full featured reference designs, called Stellarisware and plug in hardware to create a prove of concept within a very short time, using the target components, not just a model. When combined with the ARM CMSIS processor library it's amazing how quickly you can be developing real applications on a Cortex-M3 device. With an evaluation board, you can literally be coding at the application level on the first day.

The PC market has for many years enjoyed a vibrant software component marketplace, particularly for Visual Basic and more recently .NET components. There are many vendors of RTOS's and communications stacks in the embedded space but they have significant barriers to face. Dramatically different performance classes, different microcontroller endianness, address space models, data structure packing and alignment in many cases force the development of poor quality and inefficient code.

C code that is written to be portable across architectures must shun many compiler specific optimizations as well as type safe data structures, in order to be portable. C++ offers many overhead-free advantages over C, such as enhanced type safety, even without applying object oriented techniques. Because robust C++ compilers are not available for many microcontroller families, C++ is not portable and cannot be used in the development of mass market embedded software components. Portable code is also much more difficult and costly to develop and test.

The emergence of a common architecture for microcontroller development would benefit end users through greater software component availability, higher quality offerings and reduced development times resulting in faster time to market. Software vendors could for the first time access a large market with binary distribution of software rather than source code distribution. This would protect product quality as well as intellectual property.

References

1. Liam Power and Shane Robinson The ARM Cortex-M3 and the convergence of the MCU market, Dec 2009