Multicore and Many-Core Computing
Ioannis E. Venetis
Multicore and future many-core processors (which are generally considered to be processors that include over 100 cores) have brought a great deal of changes in the way that programmers and users view computer systems. Concepts previously known to a relatively small and specialized community, like parallelism and synchronization, have now forcefully entered the everyday life of many more people. A common question is why we moved to this new technology. Uniprocessor systems have served us well for the last few decades. A vast number of tools have been developed over the years, which made programming and use of these systems easy and intuitive. Improvements in execution speed have made it possible to implement and use applications that were previously impossible to use. In this chapter, we will try to understand why this well-established development model of processors and applications had to be changed. We will analyze the main obstacles that appeared in the development of uniprocessor systems and how they led to the development of multicore systems. Furthermore, we will discuss current trends in the architecture of multicore systems and the obstacles that have to be overcome and will lead to many-core systems. Finally, we will cover the impact that changes made in the hardware have in the development of software and how this leads to the introduction of programming models that are tailored toward multicore ...