The specification of a (digital) computer system at a somewhat general level, including description from the programming (user) viewpoint of the instruction set and user interface, memory organization and addressing, I/O operation and control, etc. The implementation of an architecture in members of a given computer family may be quite different, yet all the members should be capable of running the same program. Implementation differences may occur in actual hardware components or in subsystem implementation (e.g. microprogramming as opposed to wired control), generally in both. Different implementations may have substantially different performances and costs. An implementation feature—such as a cache memory—that is transparent to the user does not affect the architecture. Common architecture provides compatibility from the user’s viewpoint.
In the context of engineering and hardware design, the term architecture is used to describe the nature, configuration, and interconnection of the major logic organs of a computer (and is thus closer to the general meaning of the word). These devices would normally include the memory and its components, the control unit and the hardware components designed to implement the control strategy, the structure, range, and capability of the ALU, and the interconnection of the input/output—such as whether star or bus connected—and the nature and capabilities of any channel controllers. A detailed block diagram or schematic of the actual (as distinct from the virtual) machine would normally form part of, or even be central to, such a description.