Originally developed to support video games, graphics processor units (GPUs) are now
increasingly used for general-purpose (non-graphics) applications ranging from
machine learning to mining of cryptographic currencies. GPUs can achieve
improved performance and efficiency versus central processing units (CPUs) by
dedicating a larger fraction of hardware resources to computation. In addition,
their general-purpose programmability makes contemporary GPUs appealing to
software developers in comparison to domain-specific accelerators. This book
provides an introduction to those interested in studying the architecture of
GPUs that support general-purpose computing. It collects together information
currently only found among a wide range of disparate sources. The authors led
development of the GPGPU-Sim simulator widely used in academic research on GPU
architectures.

The first chapter of this book describes the basic hardware structure of GPUs and
provides a brief overview of their history. Chapter 2 provides a summary of GPU
programming models relevant to the rest of the book. Chapter 3 explores the
architecture of GPU compute cores. Chapter 4 explores the architecture of the
GPU memory system. After describing the architecture of existing systems,
Chapters ref{ch03} and ref{ch04} provide an overview of related research.
Chapter 5 summarizes cross-cutting research impacting both the compute core and
memory system.

This book should provide a valuable resource for those wishing to understand the
architecture of graphics processor units (GPUs) used for acceleration of
general-purpose applications and to those who want to obtain an introduction to
the rapidly growing body of research exploring how to improve the architecture
of these GPUs.