ARM vs. x86
As we all know, x86 is today’s dominant for desktop and portable computer processors while ARM(Advanced RISC Machines) is the dominant of microcontroller and embedded processors.
Their main difference is that they are based on different instruction set architecture:
- x86 is based on CISC(Complex Instruction Set Computer)
- ARM is based on RISC(Reduced Instruction Set Computer)
So, what’s the big difference between CISC
and RISC
? Here are some summaries:
CISC | RISC |
---|---|
Emphasis on hardware | Emphasis on software |
Includes multi-clock complex instructions | Single-clock, reduced instruction only |
Memory-to-memory : “LOAD” and “STORE” incorporated in instructions | Register-to-register: “LOAD” and “STORE” are independent instructions, only these two instructions can access memory |
Higher cycles per second, Smaller code sizes | Fewer cycles per second, Larger code sizes |
Transistors used for storing complex instructions | Spends more transistors on memory registers |
Less RAM is needed to store the assembly level instructions | More RAM is needed to store the assembly level instructions |
Less time is needed to compile | More time is needed to compile |
The reason why we say RISC emphasizes more on software is that reduced instruction set means more burden on software design, per se, it requires more efficient softwares and more complex compliers.
Today, the Intel x86 is arguable the only chip which retains CISC architecture while ARM has plenty of manufacturers. (Apple, Nvidia, Samsung Electronics, arm, etc).
With the decrease in price of RAM and the advance in compiler technology, the RISC use of RAM and emphasis on software has become ideal.
Today, RISC is used in most real-time systems for the following 2 properties:
- One cycle execution time
- Pipelining: A technique that allows for simultaneous execution of parts, or stages, of instructions to more efficiently process instructions.
- large number of registers: The RISC design philosophy generally incorporates a larger number of registers to prevent in large amounts of interactions with memory.
So, as for x86 and ARM, we have:
x86 | ARM |
---|---|
Higher energy consumption | Lower energy consumption |
Base for most desktop OS like Linux and Windows | Base for most mobile OS like Android |