In computer engineering, computer architecture is the conceptual design and fundamental operational structure of a computer system. It is the technical drawings and functional description of all design requirements (especially speeds and interconnections), it is how to design and implement various parts of a computer — focusing largely on the way by which the central processing unit (CPU) operates internally and how it accesses addresses in memory.

It can be defined as the science and art of selecting and interconnecting hardware components to create computers that meet functional, performance and cost goals.

Computer architecture includes at least three main subcategories:

 Instruction set architecture, or ISA, is the abstract model of a computing system that is seen by a machine language (or assembly language) programmer, including the instruction set, memory address modes, processor registers, and address and data formats.
 Microarchitecture, also known as Computer organization is a lower level, a detailed description of the system that is sufficient for completely describing the operation of all parts of the computing system, and how they are inter-connected and inter-operate in order to implement the ISA. The size of a computer's cache for instance, is an organizational issue that generally has nothing to do with the ISA.
 System Design which includes all of the other hardware components within a computing system such as:
 System interconnects such as computer buses and switches.
 Memory controllers and hierarchies.
 CPU off-load mechanisms such as direct memory access.
 Issues like multi-processing.

Once both ISA and microarchitecture has been specified, the actual computing system needs to be designed into hardware. This design process is called implementation. Implementation is usually a hardware engineering design process.

Implementation can be further broken down into three but not fully separate pieces: 
 Logic Implementation: Design of blocks defined in the microarchitecture, mainly, at the register-transfer and gate levels.
 Circuit Implementation: Transistor-level design of basic elements (gates, multiplexers, flip-flops, etc.) as well as of some larger blocks (ALUs, caches etc.) that may be implemented at this level, or even at a lower physical level, for performance reasons.
 Physical Implementation: Physical circuits are drawn out, the different circuit components are placed in a chip floor-plan or on a board and the wires connecting them are routed.

For CPUs, the entire implementation process is often called CPU design; it can also be a family of related CPU designs, such as RISC and CISC.

More sub-definitions

Some practitioners of computer architecture use more fine subcategories:

 Macroarchitecture: Architectural layers that are more abstract than microarchitecture, for example ISA.
 Instruction Set Architecture (ISA): As defined above.
 UISA (Microcode Instruction Set Architecture): A family of machines with different hardware level microarchitectures may share a common microcode architecture, and hence called a UISA.
 Assembly ISA: A smart assembler may convert an abstract assembly language common to a group of CPUs into slightly different machine language for different CPU implementations.
 Programmer Visible Macroarchitecture: Higher level language tools such as compilers may define a definite interface to programmers using them, abstracting differences between underlying ISA, UISA, and microarchitectures; for example the C, C++, or Java standards define three different definite programming interfaces.
 Pin Architecture: The set of functions that a microprocessor is expected to provide, from the point of view of a hardware platform.  For example, signals that the processor is expected to emit during executing an instruction.

Examples of computer architectures
 The x86, made by Intel and AMD.
 The SPARC, made by Sun Microsystems and others.
 The PowerPC, made by Apple, IBM, and Motorola.

Related pages
 Computer hardware
 Software architecture
 Microarchitecture

References

 ISCA: Proceedings of the International Symposium on Computer Architecture 
 Micro: IEEE/ACM International Symposium on Microarchitecture
 HPCA: International Symposium on High Performance Computer Architecture 
 ASPLOS: International Conference on Architectural Support for Programming Languages and Operating Systems 
 ACM Transactions on Computer Systems
 IEEE Computer Society
 Microprocessor Report

Other websites
 http://www.cs.wisc.edu/~arch/www
 http://www.cs.wisc.edu/arch/www/people.html
 ESCAPE  - an easy-to-use, interactive portable PC-based simulation environment aimed at the support of computer architecture education
 http://www.codeproject.com/useritems/System_Design.asp  - This approach allows beginners to easily break and design complex software systems.
Technical University of Catalonia, Department of Computer Architecture
The von Neumann Architecture of Computer Systems 

Computer hardware