Wikipedia lists over 45 different Instruction Set Architectures.
I would bet that most of those are listed for legacy purposes, but I barely have any knowledge on the subject (I’m not even sure if ISAs directly correspond to architectures as in, e.g., amd64
). It seems to be a topic “beyond my scope”, and I have to Google the architecture for whatever device I’m dealing with, every single time.
Usually, I’m dealing with laptops and PCs (sometimes running Windows, sometimes OMV, which is based on Debian), Android devices (mostly smartphones), RaspberryPIs, and perhaps other SBCs in the future.
While I often see stuff such as ARM
, ARMv7
ARMv8
, x64
, amd64
, AArch64
and a few others, my research so far showed that many of them are references to a subset/family of architectures, so I end up wasting a lot of time to finally find that the answer was actually very simple.
I think I use this information almost exclusively for downloading the correct release of some software for my device (specially considering I’m only a beginner in using Docker).
Up until I started looking for this information, I didn’t even know there was such a thing as RAM Architectures (per this question), so, if possible and relevant, I would appreciate any information on that as well!
Finally, I know that my question is derivative from this one and perhaps even others, but I felt like neither question I mentioned was aimed at what I this one intends to, as those and others are specific to some application of this concept (and often on StackOverflow)!
1
From software in user space, you basically don’t have to care about RAM architecture.
There are approximately two CPU lines you need to care about, Intel/AMD vs ARM, each of which comes in a 32-bit and 64-bit flavor.
You may or may not decide to care about 32-bit architectures (“x86” and “ARM A32 aka ARMv1-9”).
That leaves “x64” (the AMD64 instruction set) and “ARM A64 aka AArch64”.
That covers about 90% of what you might need to know. You can see that Microsoft have their C# support for those, additionally spread across operating systems.
If you’re going to emit machine code yourself, or rely on specific accelerator features, then it gets a lot more complicated and you need to know which of SSE, MMX, AVX, NEON etc applies and is currently available.