Multi-Core Programming: Increasing Performance through Software Multithreading

To gain a better understanding of threading in multi-core hardware, it is best to review the fundamentals of how single-core processors operate. During the debugging, tracing, and performance analysis of some types of programs, knowing a processor's details is a necessity rather than an option. This chapter and Chapter 10 provide the architectural concepts of processors that are pertinent to an understanding of multi-threaded programming. For internal instruction-level details, you should consult Intel Software Developers Guides at Intel's Web site.
This chapter discusses single-core processors as a basis for understanding processor architecture. If you are already familiar with the basics of processors and chipsets, you might skip this chapter and move directly to Chapter 10.
The term processor has become loosely defined. A more precise definition is developed in the following sections. A chipset is the set of chips that helps processors interact with physical memory and other components. Here, the chip is actually a processor but without centralized main processing capability. A block diagram with all the basic components in a computer system is represented in Figure 9.1.
You might be familiar with two chips in the chipset. Previously these chips were known as the Northbridge and Southbridge and they were connected by a shared PCI bus. Intel changed the implementation and started using dedicated point-to-point connections or direct media interface (DMI) between these two chips and introduced Intel Hub Architecture (IHA),...