ARM appears to be tolerating a number of freely available processor core clones, as long as they are based on older versions of the ARM architecture.
One wonders if it will different this time around. Or will ARM litigate into extinction any free, open-source, or rival commercial implementations of the ARM instruction set architecture, just as the company did a decade ago?
Nonetheless ARM clones are coming, but given ARM's previous determination to wipe out clones, the creators are being wary.
Professor David May, of Bristol University and XMOS, has created a compiler that will compile X programming language software for a processor based on just the 37-most useful Thumb instructions. But he has said he may move on to something simpler that will better support parallelism. If Professor May had just wanted an open-source ARM core Professor May could have saved himself some trouble by just downloading one from www.opencores.org.
However, most of these royalty-free ARM cores are based on out-of-use instruction set variants from the early days of ARM. There are two reasons for this: they are simpler and easier to develop and, by not being fully compatible with ARM's Cortex range of processors, have so far avoided hostile legal action.
OpenCores, a community site for the development of open-source IP cores, plays host to the downloadable synthesizable Amber processor.
The Amber processor core is compatible with the ARMv2a instruction set architecture (ISA) and is therefore supported by the GNU toolset. The Amber project includes the Amber core, in two variants and a number of peripherals, including a UART, a timer and an Ethernet MAC.
The Amber 23 has a 3-stage pipeline, a unified instruction and data cache and is capable of 0.75-DMIPS per MHz. The Amber 25 has a 5-stage pipeline, separate data and instruction caches and is capable of 1.05 DMIPS per MHz. The cores do not contain a memory management unit (MMU) so they can only run the non-virtual memory variant of Linux.
According to the Amber page at opencores.org the older v2a version of the ARM instruction set has been used because it is supported by the GNU tool chain and is "not covered by patents so can be implemented without a license from ARM."
It is the case that patents usually have a 20 year life and therefore those that were in force in 1990 have now expired. However, modern implementations of old instruction sets could infringe on techniques that have been patented more recently by ARM or other companies – so I don't think the age of the instruction set is a water-tight defense.
The most likely explanation of the lack of legal action is that ARM has chosen not to prosecute individuals and organizations producing ARM-compatible cores that do not compete directly with ARM's contemporary portfolio. Indeed there is an argument that the availability of simple ARM clones for use by students would improve the ARM ecosystem.
1. The PicoTurbo case was actually a loss for ARM. PicoTurbo showed the holes in ARM's patents (specifically prior art and the ability to implement patented functionality differently). ARM paid PicoTurbo millions of dollars to go away.
2. It is important to understand that interfaces (i.e., the instruction set) are not covered under patents or copyrights. ARM patents specific implementations of features mandated by the instruction set; that is how they protect themselves. It is legal to implement the latest ARM instruction set using techniques not covered by ARM's patents.
PicoTurbo eventually settled out of court.
I would say it was a win for ARM.
PicoTurbo acknowledged ARM's patents and its rights to enforce them and agreed to stop its sales and marketing efforts on the disputed products and IP. PicoTurbo's existing customers were "legitimized" by ARM and allowed to go to market with support from PicoTurbo.
As PicoTurbo could no longer sell I think the company was dissolved soon after this happened in December 2001.
I don't know if ARM paid PicoTurbo "millions to go away" as part of the settlement.
If that is right i might have to change my position on it being a win for ARM.
But even if they did spend millions it was probably money will spent to send out the message that there is little to be gained commercially by trying to clone an ARM processor.
I think PicoTurbo showed that best defense is prior art. Other than that, you have to show that your implementation is meaningfully (approaching 100%) different than what ARM has valid patents for. Note that the patents cover only a small part of the processor though.
Yes I am sure that interfaces (the ISA in this case) are not patentable or copyrightable. To be sure, look at the paperwork in the PicoTurbo case. The patents ARM sued about were about implementations of the ISA, not the ISA itself.
Here is the pertinent blurb, "So long as the specific code used to implement a method is different, anyone is free under the Copyright Act to write his or her own code to carry out exactly the same function or specification of any methods used in the Java API. It does not matter that the declaration or method header lines are identical."