Architecture Naming Conventions And More

x86:

I understand that x86 refers to an ISA, and something like Kaby Lake is an implementing microarchitecture. The name x86 evolved from the 8086 16-bit cpu. x86 has obviously evolved to include 64-bit, so we say x86-64 to refer to it. So, what is the modern x86 ISA, i.e. x86 from say 2010 is different to x86 from 2022 even though we call them the same. So, how to differentiate?

ARM:

My understanding here is not concrete. Consider the Kirin 655 SoC. How to relate certain terms to Intel?

  • Armv8 is the ISA, like x86?
  • What is Intel name equivalent of Armv8-a? Microarchitecture?
  • Is Cortex A like i3,i5,i7 in Intel? Or is this a microarchitecture?
  • Cortex A-53 is a specific implementation (or IP for ARM) like i5-7200U?

And More:

  • When a CPU says it supports MP3 codec, how does this translate to software? e.g. do we get certain instrinsics?
  • The Kirin 655 SoC has 8 cores, arranged in two clusters. 4 running at 2.1GHz, the other 4 running at 1.8GHz. What benefits does this have?

Edited by Lachlan on

It depends on what you want to reference with "modern x86". If you want just instructions then you can say x86_64 + whatever extensions you need SSE/AVX/etc.. If you need specific implementation details, performance, execution units, etc.. then you say "Kaby Lake" or Zen3 & others.

As far as I understand it - in ARM there are three naming "categories" (or whatever you want to call it).

There's instruction set / architecture - ARMv8-A, ARMv8.1-A & others.

There's core name - Cortex-A72, Denver, Kyro, etc.. Those define CPU/microarchitecture capabilities. Execution units, pipeline & similar. Just like what "Kaby Lake" means.

And then there's specific implementations / SoCs - Tegra X1, Kirin 655. These typically have extra things than just CPU - memory, GPU, Ethernet, HDMI, I2C. These are not exactly just like intel CPU models "i5-7200U" because they have more or less what whole x86 motherboard has. That's why "System on a chip" name.

When SoC includes "mp3 codec" that is typically as separate hw unit that you need to interact with SoC specific interface. Sometimes it is specific registers, sometimes it is some kind of memory, or specific bus. It depends. For example on Raspberry Pi all video decoding/encoding related functionality is done through mailbox interface to VPU (which is done through MMIO registers).


Edited by Mārtiņš Možeiko on