Definition of a processor vs core (multiprocessor vs multicore)
After reading alot of links, it bothers me that there is so much overlap between simple definitions such as CPU, processor, core, etc.
https://stackoverflow.com/questions/19225859/difference-between-core-and-processor
Let's clarify first what is a CPU and what is a core, a central processing unit CPU, can have multiple core units, those cores are a processor by itself, capable of execute a program but it is self contained on the same chip.
What is the difference between MultiCore and MultiProcessor?
A CPU, or Central Processing Unit, is what is typically referred to as a processor.
So which one is it?
A CPU (central processing unit) contains (1-many) cores. Each core can execute (1-many) threads depending on hyper-threading technology - it does the actual computation sort to speak.
So what is a processor? Does it refer to the CPU, the entire chip as a whole? Does it refer to one core on a CPU? And what exactly does multiprocessor/multicore mean? Are they synonymous?
Yes, A processor is a generic term used to describe any sort of CPU, regardless of cores. Same goes for CPU, it does not imply single or multi-core and can be used to refer to either.
A central processing unit (CPU) is the electronic circuitry within a computer that carries out the instructions of a computer program by performing the basic arithmetic, logical, control and input/output (I/O) operations specified by the instructions. The term has been used in the computer industry at least since the early 1960s. Traditionally, the term "CPU" refers to a processor, more specifically to its processing unit and control unit (CU), distinguishing these core elements of a computer from external components such as main memory and I/O circuitry.
Processing performance of computers is increased by using multi-core processors, which essentially is plugging two or more individual processors (called cores in this sense) into one integrated circuit. Ideally, a dual core processor would be nearly twice as powerful as a single core processor. In practice, the performance gain is far smaller, only about 50%, due to imperfect software algorithms and implementation. Increasing the number of cores in a processor (i.e. dual-core, quad-core, etc.) increases the workload that can be handled. This means that the processor can now handle numerous asynchronous events, interrupts, etc. which can take a toll on the CPU when overwhelmed. These cores can be thought of as different floors in a processing plant, with each floor handling a different task. Sometimes, these cores will handle the same tasks as cores adjacent to them if a single core is not enough to handle the information.
Due to specific capabilities of modern CPUs, such as hyper-threading and uncore, which involve sharing of actual CPU resources while aiming at increased utilization, monitoring performance levels and hardware utilization gradually became a more complex task.
Multi-processor systems are different however. This refers to a computer with a motherboard that supports more than 1 processor (usually 2 to 8 CPUs, but some super computers use special hardware that allows for many more to be used on a single motherboard). Here is a catch, multi-processor computers can (and usually do) use multi-core CPUs. For example, I have built several multi-processor servers that had two Intel Xeon 5560 Quad Core CPUs. This particular CPU offers a technology known as hyper threading. Hyper threading is a technology that virtually splits the 4 (quad) cores into halves, which effectively gives you a total of 8 cores per CPU. Since we have 8 cores per CPU with hyper-threading, and the system is multi-processor - the end result is a system with 16 cores. Each core can process a thread independently of the other cores, which means you have a lot more power to process information than you would with a single CPU.
A processor is a difficult term to define, like many words it depends on the context in which it is being used.
A processor as defined by Dictionary.com is
the key component of a computing device that contains the circuitry necessary to interpret and execute electrical signals fed into the device
So in a sense a computer has many "processors". Everything from the CPU which does the majority of the 'thinking' for the computer, to the GPU(drives the display) is technically a processor.
As for cores, many modern CPU's(at the time this was written) are made up of multiple processors. This allows for faster performance because the work is split amongst the cores. The CPU(Central Processing Unit) simply refers to the way the operating system sees the CPU - as an entity that will process information as needed.
i.e. A mulitcore CPU has more than one core(not including HyperThreading), while a singlecore CPU does not.
Hyper threading is a different mess altogether.
It allows the operating system to take advantage of running multiple independent tasks simultaneously, which often yields greater performance but is not available on all CPU's