Architectural state[1] is the collection of information in a computer system that defines the state of a program during execution. Architectural state includes main memory, architectural registers, and the program counter. Architectural state is defined by the instruction set architecture and can be manipulated by the programmer using instructions. A core dump is a file recording the architectural state of a computer program at some point in time, such as when it has crashed.
Examples of architectural state include:
- Main Memory (Primary storage)
- Control registers
- Instruction flag registers (such as EFLAGS in x86)
- Interrupt mask registers
- Memory management unit registers
- Status registers
- General purpose registers (such as AX, BX, CX, DX, etc. in x86)
- Address registers
- Counter registers
- Index registers
- Stack registers
- String registers
Architectural state is not microarchitectural state. Microarchitectural state is hidden machine state used for implementing the microarchitecture. Examples of microarchitectural state include pipeline registers, cache tags, and branch predictor state. While microarchitectural state can change to suit the needs of each processor implementation in a processor family, binary compatibility among processors in a processor family requires a common architectural state.
Architectural state naturally does not include state-less elements of a computer such as busses and computation units (e.g., the ALU).