Multi core processors and systems utilize central processing units (CPU) which have two or more distinct embedded processing elements.
These devices are typically selected to reduce cost, increase system performance and reduce overall power consumption.
There are three basic types of multi core configurations: Peripheral, Homogeneous and Heterogeneous.
The “Peripheral” configuration is actually a quasi multi core in that there is typically a single central processing core with a number of associated hardware accelerator blocks around it. The CPU core as well as the peripherals are all on the same piece of silicon, rather than as discrete components on a board.
The peripherals are dedicated to specific tasks and utilized to offload the CPU core. These hardware accelerators may include cryptography engines, memory management, data storage management (e.g., RAID functionality for data parity and distribution), pattern matching engines and graphical processing units (GPU).
In a “Homogeneous” multi core, the same type of CPU is replicated multiple times on a single chip. Each CPU has exactly the same features, memory structure and internal bus structure. The CPU may also contain hardware accelerator blocks for memory management or mathematical computations.
A homogeneous configuration is best used for general purpose processing where parallelism can be employed to increase performance and computing power. A homogeneous system will also have additional hardware accelerator chips for application specific requirements such as graphics.
A “Heterogeneous” multi core device is a hybrid of the Peripheral and the Homogeneous configurations. These chips can include a number of same, similar, or different types of processors as well as multiples of each hardware accelerator. A heterogeneous multi core is more application specific as its engines are selected to optimize performance and reduce power in particular tasks.
Associated with all of the processing cores and hardware accelerator engines is a bus linking everything together. As there are many devices which may need to communicate with one another, as well as to have access to shared on-chip resources and to communicate off chip – a switch fabric bus is most suitable for multi core devices. This contrasts with a shared bus architecture which can be employed within a single CPU and peripheral type system.
In all high performance multi core designs, the bus fabric is non-blocking which allows all elements to have independent access to all resources. In some multi core devices, it is necessary to have as many as 32 bus masters operating concurrently to ensure the data and communications flow un-impeded.
Programming is probably the most challenging task in a multi core system. Multi threading is used for the most efficient distribution of tasks across the hardware cores, and to not unduly burden the software.
In a single core, the CPU may need to access resources like memory cache, peripherals , UARTs, Ethernet encoders or a display. In this situation there is no competition for the internal bus or the other engines. Even when there are concurrent accesses and there are multiple threads running, there is only one demand for each single resource which is then freed up for next thread.
With two or more cores, each core can simultaneously have a thread pushing for access to the resource and the resource must provide data to each of the cores. The issue becomes how to control how the resource provides data to the particular thread in an ad hoc fashion so that the program can access the data in an orderly fashion. If programs are running sequentially, a method is required to associate the data with the correct part of the thread.
This article provided an introduction to multi core processors and systems. In a future article we will explore specific multi core systems for applications in multi-media, security, automation, communications and networking. For more in-depth analysis, we recommend the following books from Amazon to get you started:
Parallel Programming: for Multicore and Cluster Systems ($69.99)
See here for more information on the pricing.
(Image Credit – Intel )
If you found this article interesting and informative, please be sure to sign up for our weekly e-newsletter as well as daily email / RSS Feeds at SourceTech411