An early choice in the computer design process changes everything.
Did you ever realize that the desktop and mobile versions of your favorite apps run on completely different software? The reason comes down to something called an instruction set, a core building block of processors that determines a big part of how computers function. However, before we delve deeper into instruction sets, let’s talk about the purpose of a processor (CPU), colloquially called a “chip.”
The CPU is the fundamental component of a computer; it’s the part that executes code. Usually, programs are written in human-friendly languages such as C++ or Java that a processor can not directly understand. To become “usable,” software has to first be converted into machine (or binary) code, a series of ones and zeros. This conversion is performed by a program called a compiler. Compilers output machine code that the CPU then runs in chunks, also known as “instructions.” The most simple instructions range from basic arithmetic operations to input/output processes, but they can quickly become much more complex, with some modern CPUs even having instructions dedicated to accelerating machine learning via extensions. The core collection of instructions each CPU (or group of CPUs) has is called its instruction set architecture (ISA) (1).
Many processors have similar instruction sets to allow programs to run on many different computers. The most popular instruction sets are x86, a complex ISA computer (or CISC) common in laptops and desktops, and ARM, a reduced ISA computer (or RISC) usually found in phones and other mobile computing devices. The difference between a complex and reduced ISA is the philosophy used in the design process to make each one. In CISC-based CPUs, the goal is to reduce the number of instructions that each task requires; on the other hand, RISC’s objective is to have each instruction execute as quickly as possible while taking more instructions for every task (2).
In real-world use, this means that the two types of ISAs lend themselves to different uses. CISC-based processors are best suited for workloads that either uses many specific instructions or are not locked down in their functionality. A desktop computer can be used for anything from video editing to 3D modeling, very compute-heavy workloads that require specific types of processing and are ideal candidates for complex instructions. RISC is the opposite; it’s better suited for machines that are simpler and restricted in use, such as tablets.
However, there is currently a renaissance where RISC chips are being used in place of CISC chips. Just this past year, Apple announced that they would transition from using Intel x86 CPUs in their computers and instead use ARM chips similar to the ones in their mobile products (3). This new trend can be largely explained by recent advancements in software. Compilers can now highly optimize code on their own using few instructions, instead of depending on hardware-based instruction extensions. Additionally, for specialized workloads where it’s beneficial to provide more complex instructions via a hardware extension, it is often easier to do so on RISC processors as they are simpler to augment — add custom instructions — than CISC ones. While we will most likely never see reduced ISAs fully replace their complex counterparts, we are in a time of great innovation where the future of computing, and the ISAs behind it, is being shaped.
– Daniel Katz
- Sorin, L. (2006). Instruction Sets. Https://Www2.Cs.Duke.Edu. https://www2.cs.duke.edu/courses/fall06/cps220/lectures/2-isa.pdf
- Triggs, R., Simons, H., Callaham, J., & Fingas, J. (2020, July 07). Arm vs x86: Instruction sets, architecture, and all key differences explained. Retrieved October 10, 2020, from https://www.androidauthority.com/arm-vs-x86-key-differences-explained-568718/
- Porting Your macOS Apps to Apple Silicon. (n.d.). Https://Developer.Apple.Com/. Retrieved October 10, 2020, from https://developer.apple.com/documentation/xcode/porting_your_macos_apps_to_apple_silicon