systemcpucpu-architecturemicro-architecture

Architecture and microarchitecture


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


Solution

  • 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."