RANT : True ARM? : Zerro Below

All opinions on this site are those of the author alone.
No warranty of any kind is provided.   All information herein is provided as is without any warranty of any kind.



There are differing views, though I feel that the true ARM is represented by the 32-bit ISA introduced with the ARMv2 and evolved through the ARMv6 (to a lesser extent the ARMv7). Traditionally when a new incompatible ISA is introduced as the base ISA of a CPU the CPU is given a different name, ARM Ltd. chose to keep the ARM name with CPU's whose native ISA is a new 64-bit ISA (AARCH64) thus breaking the norm. As such I view the AARCH64 CPU's as not true ARM, even though some versions of these CPU's support traditional ARM ISA as a secondary.

Further the integer ISA of ARM is the 32-bit ARM ISA, not THUMB, not jazzle, not THUMB2, not any of the other secondary ISA's that they have come up with. This is part of why I am a bit off by ARMv7, there is a class of ARMv7 CPU's that do not support the ARM ISA, only supporting the THUMB2 ISA, a different ISA that is less usable.

For a bit more please see my RANT on the Future of 32-bit ARM.

A little more:

What makes ARM great as an ISA to start with?

In my view the consistent 32-bit instruction word size, the free rotate and shift on many instructions, the fact that the mass majority of instructions are conditional, the 3 operand form of most instructions, and the beauty of the core ISA, these things make the ARM ISA. These make a combination that is pretty much unique to the ARM ISA, none other that I know of has this. These are mostly things that are lost in AARCH64, and completely lost in any version of THUMB, hence the desire not to call these alternate ISA's ARM.

One thing people will often mention is code density, trying to say ARM is not good there. There are many cases where ARM code density is better than 680x0 code density, this is do to the inclusion of shift and rotate in many standard instructions and the conditional nature of nearly all instructions. In most generally cases the code density of well written ARM code is fairly close to that of 680x0 code, and 680x0 code is known for good code density.


This site hosted by NEOCITIES
© 2022 David Cagle