3

Can someone explain me broadly the difference between a processor’s architecture and its microarchitecture as well as the relation between them?

One should be related to its functioning parts but the other I do not see

Peter Cordes
  • 328,167
  • 45
  • 605
  • 847
Philippe
  • 700
  • 1
  • 7
  • 17

1 Answers1

7

Architecture in a formal sense is the publicly presented interface independent of timing and other implementation details. Microarchitecture includes certain implementation details, usually above the level transistors and process technology. For example, ARMv7-A is an architecture while ARM Cortex-A15 is a microarchitecture implementing ARMv7-A. Different implementations of exactly the same microarchitecture will provide cycle-identical timing (excluding core-external timing factors and assuming a synchronous design) but can differ in cycle time, energy efficiency, and area depending on the process technology used, the device libraries used, etc.

Architecture is sometimes used less formally or more generically to specify microarchitecture (e.g., "Haswell architecture"). Architecture can also be used in the context of hardware interfaces (e.g., pin architecture refers to a pin layout that provides compatibility across a range of parts).

In some cases, a microarchitectural detail ends up being treated as architectural despite official documentation allowing variation. For example, a cache block allocating instruction (like Power's DCBA) might be defined to give an undefined bit pattern, but initial implementations might always preserve the bit pattern on a cache hit and always insert an all-zero block on a miss. (Providing access to a random number generator through this instruction would be consistent with the architecture.) Software might sacrifice ideal portability by relying on this implementation detail. (If enough important software is non-portable in this manner, the architectural definition might be extended to define that as guaranteed behavior.)

Architecture (and less often microarchitecture) can be used to describe a more general grouping of interface definitions (of formal microarchitectures). For example, x86 is called an architecture even though it represents a variety of software interfaces which are mostly compatible, especially in retaining earlier defined interface features. Architecture family is sometimes used to refer to this broader interface sharing.

For reference, architecture was used by Gene Amdahl et al. in "Architecture of the IBM System/360" (1964, PDF): "The term architecture is used here to describe the attributes of a system as seen by the programmer, i.e., the conceptual structure and functional behavior, as distinct from the organization of the data flow and controls, the logical design, and the physical implementation."

  • More accurately, I think, the term "architecture" is by itself ambiguous and can refer to either computer architecture or instruction set architecture (ISA). An ISA is defined to be the programming model for a computer system (a specification of how to get code executed and how to use various features and configurations). A computer architecture is a combination of an ISA and a microarchitecture. A microarchitecture is a functional specification describing how code gets executed using diagrams and/or high-level system design languages. This includes the exact organization of caches, – Hadi Brais Feb 28 '17 at 14:38
  • the number of cores, the pipelines and register files in each core, the network that connects all of these together, and all the involved protocols, algorithms, and formal languages. Intel Haswell, for example, can refer to a particular x86 ISA, a family of microarchitectures that can execute programs writen that ISA, or a family of computer architectures where the ISA is the same but the microarchitectures are different. At the lowest level comes the implementation which specifies the electrical characteristics, layout of all the wires and elements, – Hadi Brais Feb 28 '17 at 14:39
  • thermal control, clock rate, timings, and process technology. These definitions are consistent to some degree with those form Wikipedia. – Hadi Brais Feb 28 '17 at 14:40
  • Oops, just a correction. An ISA is ... a specification of how to express the code to be executed... – Hadi Brais Feb 28 '17 at 14:46