In 1964 IBM invented the term “computer architecture” when it released the description of the IBM 360 (see sidebar). The term was used to describe the instruction set as the programmer sees it. Embodied in the idea of a computer architecture was the (then radical) notion that machines of the same architecture should be able to run the same software. Prior to the 360 series, IBM had had five different architectures, so the idea that they should standardise on a single architecture was quite novel. Their definition of architecture was: the structure of a computer that a machine language programmer must understand to write a correct (timing independent) program for that machine. Considering the definition above, the emphasis on machine language meant that compatibility would hold at the assembly language level, and the notion of time independence allowed different implementations.
This ties in well with my preferred definition of computer architecture as the combination of:
• the machine’s instruction set, and
• the parts of the processor that are visible to the programmer (i.e. the registers, status flags, etc.).