Computer architecture topics
Some practitioners of computer architecture at companies such as Intel and AMD usemore fine distinctions:
Macroarchitecture - architectural layers that are more abstract thanmicroarchitecture, e.g. ISA
ISA (Instruction Set Architecture) - as defined above
Assembly ISA - a smart assembler may convert an abstract assembly languagecommon to a group of machines into slightly different machine language for different implementations
Programmer Visible Macroarchitecture - higher level language tools such ascompilers may define a consistent interface or contract to programmers usingthem, abstracting differences between underlying ISA, UISA, andmicroarchitectures. E.g. the C, C++, or Java standards define differentProgrammer Visible Macroarchitecture - although in practice the Cmicroarchitecture for a particular computer includes
UISA (Microcode Instruction Set Architecture) - a family of machines withdifferent hardware level microarchitectures may share a common microcodearchitecture, and hence a UISA.
Pin Architecture - the set of functions that a microprocessor is expected to provide, from the point of view of a hardware platform. E.g. the x86 A20M,FERR/IGNNE or FLUSH pins, and the messages that the processor is expected toemit after completing a cache invalidation so that external caches can beinvalidated. Pin architecture functions are more flexible than ISA functions -external hardware can adapt to changing encodings, or changing from a pin to amessage - but the functions are expected to be provided in successiveimplementations even if the manner of encoding them changes.
The exact form of a computer system depends on the constraints and goals for which itwas optimized. Computer architectures usually trade off standards, cost, memorycapacity, latency and throughput. Sometimes other considerations, such as features, size,weight, reliability, expandability and power consumption are factors as well.The most common scheme carefully chooses the bottleneck that most reduces thecomputer's speed. Ideally, the cost is allocated proportionally to assure that the data rateis nearly the same for all parts of the computer, with the most costly part being theslowest. This is how skillful commercial integrators optimize personal computers.