Though the transistor density in a single chip keeps doubling every 18 months according to the Moore’s law from 1965, the increasing of clock frequency has hit its ceiling owing to physical constraints around 2003. Memory wall, instruction-level parallelism (ILP) wall, and power wall are the main obstacles for high clock speed in a microprocessor. To overcome the barriers and keep exploiting the advantages from Moore’s law, microprocessor vendors have started providing multi-core architectures that can increase the computing power for application acceleration. Today multi-core architectures have been proved to be ideal solutions by being adopted in a wide range from the server, desktop, and laptop to the embedded systems and digital signal processing design.
Though multi-core systems have brought us the benefits of higher computing power and low power consumption, it has also created new challenges in hardware architecture design and software application design and analysis. For the hardware architecture, the design of memory distribution and cache hierarchy is important, which may affect the cache hit rate, memory access latency, thread scheduling, and migration strategies. For software design, operating systems, parallel algorithms and libraries, and language extensions are being developed to support parallel programming models based the multi-threaded programming paradigm. Application designers need to analyze the computationally intensive tasks in an application and decompose them into smaller logical tasks to be managed by parallel algorithms (libraries). All the issues arising from each design level may affect the application performance on multi-core systems.
This ebook, Multicore Hardware-Software Design and Verification Techniques, tries to give the readership an overview on the major issues of engineering in multi-core systems and the inception of marching into the multi-core world. Chapters 1, 2, and 3 help readers to assimilate the major issues in system design due to the characteristics of diverse multi-core architectures. Chapters 4 and 5 introduce the issues in application design and analysis, which are targeted for multi-core systems. This book is designed to give the readers a consolidated and hierarchal concept from the underlying multi-core architectural characteristics to the high-level software and application design. I believe readers will not only learn from this book, but will be of high reference value.