In computer engineering, computer architecture is a set of disciplines that describes the functionality, the organization and the implementation of computer systems; that is, it defines the capabilities of a computer and its programming model in an abstract way, and how the internal organization of the system is designed and implemented to meet the specified capabilities. Computer architecture involves many aspects, including instruction set architecture design, microarchitecture design, logic design, and implementation. Some fashionable (2011) computer architectures include cluster computing and non-uniform memory access. Fundamentals and Principles of Computer Design discusses the fundamental principles of computer design and performance enhancement that have proven effective and demonstrates how current trends in architecture. Moreover, as chip technology improves, the tradeoffs between instruction set complexity and architecture/ implementation features become less constrained. This book presents a coherent approach to computer system design that encompasses many, if not most, of the design problems and solutions options.