This work aims to demonstrate the importance of integrating contemporary compilation technology with a supporting computer architecture to enhance system performance. The chapters in the book are written by individuals who are experts in their respective areas. Each chapter examines how best to exploit the interaction between the architecture and the compiler. The book explores three different aspects of this interaction. Chapters 2-6 examine the interaction of the compiler and the architecture at the instruction level on uniprocessors with multiple function units and highly segmented pipelines. Chapters 7 and 8 examine compilation issues for multiprocessor systems. The last two chapters discuss how programming language features can influence the design of both uniprocessor and multiprocessor systems. This book demonstrates the close coupling needed between the compiler and the architecture to achieve high performance, particularly in parallel machines.