The interface between hardware (microprocessor) and software which allows either to be updated independently. Includes the instruction set, memory model, privileged architecture, etc. Different from implementation of structures, which is often called micro-architecture.