The Software Optimization Cookbook: High-Performance Recipes for IA-32 Platforms, Second Edition

Multiprocessing is running a system with more than one processor. The theory is that the performance could be doubled by using two processors instead of one. And the reality is that it isn't always the case, although multiprocessing can result in improved performance under certain conditions. In general, multiprocessing can be accomplished by exploiting a wide spectrum of parallelisms starting from instruction-level parallelism in five different ways, as shown in Figure 15.1.
Computers rely on instruction-level parallelism for parallel execution, but recently, the situation has been changed. Hyper-Threading Technology (HT Technology), which appears in Intel Pentium 4 and Xeon processor-based systems, allows one processor to execute the instructions of two threads at the same time driving down the cost of multiprocessing and increasing its availability. Another scale-up technology that Intel has embraced is moving to multi-core architectures, that is, adding two or more "brains" to each processor. Explained simply, in the multi-core processor architecture, silicon design engineers place two or more "execution cores," or computational engines, within a single processor. This multi-core processor plugs directly into a single-processor socket, but the operating system perceives each of its execution cores as a discrete processor, with all the associated execution resources.
A processor that supports thread-level parallelism can execute completely separate threads of code. As a result, the processor can have one thread running from an application and a second thread running from an operating...