Q:

What is difference between architecture and microarchitecture?

I am studying computer architecture.  I would like to know the difference between the terms "computer architecture" and "microarchitecture".

A:

The term architecture was popularized by the paper "Architecture of the IBM System/360", IBM Journal of Research and Development, 8(2):87-101, April 1964 by Gene M Amdahl, Gerrit A Blaauw, and Frederick P Brooks, Jr.  They say,

The term architecture is used here to describe the attributes of a system as seen by the programmer, i.e., the conceptual structure and functional behavior, as distinct from the organization of the data flow and controls, the logical design, and the physical implementation.

According to the Wikipedia page on computer architecture the terminology was probably introduced inside IBM in 1959.
Today we would use the term instruction set architecture to describe the syntax and semantics of the interface of a computer, including the type and size of the operands, programmer visible register state, the memory model, how interrupts and exceptions are handled, the available instructions and the meaning of each instruction.  The instruction set architecture is the boundary between software and hardware, and is the contract between the programmer and the hardware designer.
The term microarchitecture is used to refer to the organization, or highest level of implementation, of a particular processor.  The study of microarchitecture would include topics like pipelining, instruction-level parallelism, out-of-order execution, speculative execution, branch prediction and caching.
I'm not sure about the etymology of microarchitecture.  I can find it used as early as 1975 (in the title of the EUROMICRO Workshop on the Microarchitecture of Computer Systems), but it could certainly be older than that.
Currently the term computer architecture or just architecture typically encompasses both instruction set architecture and microarchitecture, as well as broader system-level issues like network connectivity on multiprocessors.

