Attributes of the system that are visible to the software programmer and have a direct impact on the logical execution of a program, like the number of bits used to represent various data types, the instruction set of the computer, technique for addressing memory, method used for input, output, etc.