
Processors present in a computing device read and execute the instructions provided by a program. The processing units present inside them, also known as cores, are primarily responsible for executing such programs. Multi-core processors possess more than one processing unit. A single processor with multiple cores can run separate program instructions in each core simultaneously, which leads to parallel computing, increased speed, and enhanced functionality of the device. The improvement in performance also depends on the software algorithms used and cannot be achieved merely by utilizing a multi-core processor. This processor can be manufactured by integrating multiple dies on a single chip or by integrating the cores on to a single chip multi-processor (CMP), also known as integrated circuit (IC) die. The cores of a multi-core processor may implement inter core communication methods through shared memory and may or may not share caches, depending on the designer who is designing the multi-core processor. Bus topology, ring topology and cross bar topology are some of the commonly utilized network topologies, which are utilized for connecting the cores. The cores are dissimilar in heterogeneous multi-core systems, such as in big LITTLE of ARM Holdings, while homogeneous multi-core systems have identical cores. Multi-core processors can have different architectures and has wide application areas. They can be utilized for embedded systems, digital signal processing (DSP) and in graphics processing unit (GPU) among others.