ABSTRACT:Processors are logic circuitry that processes basic instructions that drive a computer. As we move on to generation by generation the size of processors starts decreasing with the increase in efficiency. Many techniques already exist such as data, instruction and thread level parallelism and simultaneous multithreading (SMT) which enhance the performance of different processors. In this paper we present a comparative study of multiprocessor and multicore systems with respect to power, performance. We also propose advantages and disadvantages of each of them and different scenarios where each can be used efficiently.
KEYWORDS: Multicore, Multiprocessor, Simultaneous Multithreading
To enhance system performance and in some cases, to increase availability multiple processing units are used that can execute in parallel. For surviving in today’s competition market, several industries started to focus on manufacturing faster and smarter chips. The trend of increasing a processor‘s speed to get a boost in performance is a way of the past. For increasing the speed several techniques were used clocking the chip at higher frequency is one of them. After this, parallel processing technique were used this includes data & instruction level parallelism. This technique was very beneficial as compared to previous one as they helped in improving computation speed. Multiple processors were connected in parallel to achieve parallel computation and to improve speed of execution [1]. Due to more power consumption later on multicore architectures [2] were introduced that came with high speed computation with lesser area and power consumption values.
The remaining paper is organized as follows: section (2) focuses on the work related to multiprocessor and multicore systems, section (3) focuses on theory of multiprocessor and microprocessor along with their comparison based on power and performance
Parallel computing involves the use of several processes working together on a single set of code as the same time [3]. The main reason behind exploration of parallel computing is to cut down on the execution time of processor by distributing the work among several processors. Multiple instructions are run simultaneously and then before producing output they are synchronized together, instead of running serially one after the other.The very first example of parallel computing was found on a tablet dated back to 100 B.C. [4]. The tablet comprised of three calculating areas and hence the user was capable of computing at higher speeds, for example code that one machine could execute in 5 hours could be executed on a parallel system of 5 processors in one hour greatly reducing the actual run time, with each processor running a smaller section of the input code. Each processor is doing the same amount of work as the single processor machine but they each processor could be running a different section of the code at a time.
?
Out of standard systems for parallel computing, shared-memory multiprocessor setup is found in a standard multiprocessor machine. The machine uses multiple processors for computing while sharing one common memory area. A single set of memory addresses are available that every processor knows so that no copying and moving of data is required. But even higher performance is desired and in order to meet these demands, chip designers have turned to multicore processors and parallel programming to continue the push for more performance, and in turn the ITRS Roadmap has projected that by 2022, there will be chips with upwards of 100x more cores than on current multicore processors.
The main advantage to multicore systems is that raw performance increase can come from increasing the number of cores rather than frequency, which translates into a slower growth in power consumption. General-purpose multicores are becoming necessary even in the realm of digital signal processing (DSP) where, in the past, one general-purpose control core performed many special purpose application-specific integrated circuits (ASICs) as part of a “system on chip.” This is primarily due to the variety of applications and performance required from these chips. This has driven the need for more general-purpose processors. Recent examples would include software-defined radio (SDR) base stations, or cell phone processors that are required to support numerous codecs and applications all with different characteristics, requiring a general programmable multicore.
A CPU, or Central Processing Unit, is what is typically referred to as a processor. A processor contains many discrete parts within it, such as one or more memory caches for instructions and data, instruction decoders, and various types of execution units for performing arithmetic or logical operations. A multiprocessor system contains more than one such CPU, allowing them to work in parallel. This is called SMP, or Simultaneous Multiprocessing. In a multiprocessor system two or more CPU’s or central processing units are integrated into a single computer system as shown in figure 2. So basically it’s having two or more CPU’s on a system physically. It is intended to have a processor perform a program instruction, while the other processor simultaneously performs a different program instruction, speeding up the computing process.

Multiprocessing can be further classified as:
Another one can be processor coupling where multiple CPU’s are connected at the bus level and have an access to a central shared memory, or participate in a memory hierarchy with both local and shared memory. This is common for a PC system user. On the other hand, multiple CPU’s can also be connected via a high speed communication system, in other words multiple separate CPU’s that are connected to work together and are viewed as a single system.
Flynn’s taxonomy classifies multiprocessor system as follows:
A multicore CPU has multiple execution cores on one CPU[6]. Now, this can mean different things depending on the exact architecture, but it basically means that a certain subset of the CPU‘s components is duplicated, so that multiple "cores" can work in parallel on separate operations. This is called CMP, Chip-level Multiprocessing. For example, a multicore processor may have a separate L1 cache and execution unit for each core, while it has a shared L2 cache for the entire processor. That means that while the processor has one big pool of slower cache, it has separate fast memory and arithmetic/logic units for each of several cores. This would allow each core to perform operations at the same time as the others.
A multicore CPU has multiple execution cores on one CPU[6]. Now, this can mean different things depending on the exact architecture, but it basically means that a certain subset of the CPU‘s components is duplicated, so that multiple "cores" can work in parallel on separate operations. This is called CMP, Chip-level Multiprocessing. For example, a multicore processor may have a separate L1 cache and execution unit for each core, while it has a shared L2 cache for the entire processor. That means that while the processor has one big pool of slower cache, it has separate fast memory and arithmetic/logic units for each of several cores. This would allow each core to perform operations at the same time as the others.

A Multi-core processor is a single computing component that has two or more independent cores or processing units as shown in figure 3. These cores are the ones that read and perform your program’s instructions on your CPU. These instructions are basically ordinary CPU instructions like add, move data, and branch. Being a multi-core processing unit, it can execute multiple instructions at the same time. A multi-core processor is intended to lessen the heat coming off CPU and to increase the speed of processing these instructions. Programs that are said to have an increase in speed do have to be amenable to parallel computing, meaning that instructions can be divided into smaller ones for the multi-core to execute simultaneously.
These cores are usually integrated into a single IC (integrated circuit) die, or onto multiple dies but in a single chip package. A single chip package is a surface mount technology package for your IC. In other words, it houses your much needed electronic parts where your program’s instructions are performed. There are two types in multicore processor.
A Multicore system consists of:
What’s the difference between a multicore and a multiprocessor system?
Both may seem sound similar, but they actually differ in many ways. Actually, the only similarities they have are their intentions of speeding up your computing processes.
A multicore uses a single CPU while a multiprocessor uses multiple CPU’s. That being said, a multiprocessor system will cost more and will require a certain system that supports multiprocessors. In regards to their speed, if both systems have the same clock speed, number of CPU’s and cores and RAM, the multicore system will run more efficiently on a single program. This is because the cores can execute multiple instructions at the same time, but not multiple programs; this is because of its shared cache (L1, L2, and L3). This is where multiprocessor comes in handy. With each CPU having their own cache, they can execute programs simultaneously but will take longer than multicore.
From a technical standpoint, the difference between multi-core and Simultaneous Multiprocessing (SMP) is relatively benign. In an SMP system, each processor plugs into a different socket and multiple processors are connected through some kind of bus. In a multi-core processor, the “core” logic of a processor is replicated multiple times on the same chip. Multiple cores may share data through some on chip logic or shared caches. Multiple cores are presented to applications at the OS level exactly the same way as multiple processors in an SMP system. We can compare multiprocessor and multicore architecture based on many factors such as:
Heat dissipation is a challenging issue in multicore processor when we need to improve the performance and execution time [8]. In order to maintain the performance less complexity instruction can be used which runs in ILP. When designing the multicore processor, rather than increasing the number of core, Gate-based approach can be implemented in multithreading, the performance could be better.
Reducing power for a conventional multi-core architecture:
| Multicore | Multiprocessor |
|---|---|
| Single or multiple integrated circuit die/s | Single or multiple systems |
| Cheaper (single CPU that does not require multiple CPU support system) | Expensive (Multiple separate CPU’s that require a system that supports multiprocessors) |
| Will have less traffic (cores integrated into a single chip and will require less time) | Will have more traffic (distances between the two will require a longer time) |
| Does not need to be configured | Needs a little complex configuration |
| Faster running a single program | Faster running multiple programs |
In this paper we have presented a comparative study of multicore and multiprocessor systems based on power and performance. Each type of architecture is suitable for different type of task execution. A multicore architecture is fast at executing multiple instructions of a single huge code and improving execution speed whereas a multi-processor is capable of executing multiple programs in parallel and speeding up execution. The main application of multi-core processors is found in embedded systems, data, web server or web commerce signal processing, CAD/CAM, image processing, networking and graphics.
Multicore versus Multiprocessor: A Review
原文:https://www.cnblogs.com/luyanliang/p/12952091.html