Multi-core is the universal term used to describe multiple CPUs working together on a similar chip. The first application of multi-core technology are dual-cores that function as a single system Also known as multi-core technology, it is a type of architecture where a physical processor contains the logic part of multiple processors and said processors are grouped into an Integrated Circuit (IC). Multi-core also refers to differentICs assembled together. Example of devices that utilize multi-core technology are desktops, laptops, servers and also workstations.
How It Works
As the multi-core technology was conceptualized, it has also made the concept of parallel processing a possibility. Parallel processing is capable of significantly increasing the processing speed, efficiency and overall performance of computers by only placing extra CPUs in a single chip. This would greatly reduce the power and heat consumption while still being able to increase the overall performance without any cost of energy consumption. In other words, the performance is higher at the same cost as before.
Multi-tasking is now also possible thanks to the introduction of this technology. This has also made an impact on IT companies such as Intel and AMD as they can concentrate on boosting performance while maintaining the energy cost.
For maximum performance, multi-threaded programs or software should run on multi-core processors. Multi-threaded software includes operating systems that can split task and commands into separate workloads that can then be executed on each core. Thus, more tasks are finished in a short amount of time.
The first multi-core processor was firstly introduced in the 1990s. Initially, there were only 2 cores present, thus the term dual-core, but today, the range of cores vary from 4 to 10 or more. Now with Intels Hyperthreading technology, the number of cores that the operating system sees virtually doubles.
With Intel and AMD currently in the midst of developing multi-core technology, the multi-core technology is now trending. With multi-threaded software on the rise, the number of computers equipped with multi-core processors is expected to rise as well.
Advantages of Multi-Core Technology
The Multiple cores operate simultaneously on instructions and at a lower frequency than the single core results into the better processing speed of the multi-core processor.
The multicore processor will also process more data than the single-core processor when at the same clock frequency. Other than that, multicore processors provide higher performances and handle complex jobs at relatively lower energy compared to a single core, which is an important factor in appliances like mobile phones and laptops which operate on batteries. Next, since these cores are produced close to each other on the same chip, the signals travel in shorter distances between them due to which there are less weakened signals. Since the signals dont attenuate most times, more data is shifted in a particular time and there is no need for repetition of signals.
Disadvantages of Multi-Core Technology
One of the main challenges in this technology is the thermal issues that it faces. Thermal issues simply mean the power and temperature. In order to reduce the power consumption, the design of the multicore has to make use of different power management unit so that it will be able to manage unnecessary power wastages. The power management has to shut down cores which are not operating. The cores also run at a lower frequency rate compared to the single processor in order to reduce power dissipation. The amount of heat generated and distributed in the chip has to be the architecture of the multicore. Other than that, the number of transistors in a chip is also based on power consumption because the more the cores available, the density of the transistor increases contributing to the power consumption eventually. A hot-spot is when the core is overheated in a multicore configuration. Thread migration higher power consuming process is moved to different core while a lower power consuming process will be moved to an overheated core. Therefore, an overheated core can be cooled by dividing the cores. Using Dynamic Voltage and Frequency Scaling technique to solve this problem, voltage and frequency of the hot core will be reduced since power dissipates considering it is its role which also eventually affect the overall performance.
Next, the level of parallelism is one of the factors multi core technology is a challenge. By all means, for a better performance less time is needed to finish the process. The performance is straightly related to the amount of parallelism due to the increase in number of processes that can be executed simultaneously. There are two levels in a parallelism which are ILP and TLP. The role of TLP is that it increases the overall parallelism by breaking a program into many small processes and executing them at the same time. To obtain better level of parallelism and also good performance, software developers have to write perfect algorithms which gives us a meaning that all cores are considered to be used in a very efficient manner. It is possible for cores to starve for data if the algorithms are incompatible to the multi core design. When data starves the process will run on of the cores while the other will be inactive. Thus, the success of a multicore technology strongly depends on the way the algorithms are written.
Last but not least, interconnecting issues also contributes for the disadvantages of a multicore technology. Cores, caches, and network controllers can affect the performances the they are not resolved properly considering they are components found on a chip of the multicore processor. Bus was used as communication party between components under the initial processors. Eventually, crossbar and mesh topologies are used to reduce the latency of the interconnection in the components. Parallelism increase at thread level when communication increases off-chip due to memory-access,I/O and others. Packet based interconnection are used actively for resolving such issues.
Uses of Multi-Core Technology
Multi-core technology is the processors where two or more working processor chips (cores) working simultaneously as one system. Dual cores are with two processors that work as one system are the first type of multi-core technology applications. It is expected that most application development efforts will focus on multithreaded models, making multi-core systems more and more desirable. Multi-core technology is useful in very demanding applications such as video editing, encoding and 3D gaming.
Memory management is critical when managing VMs. Multi-core CPUs helps to increase in memory channels, allowing for large data to be processed and analyzed. Processor can access data from memory instead of checking in hard drive.
High-performance computing (HPC) is the practice of breaking complex computations into smaller pieces. CPU cores solves each piece of computation. Its like taking a supercomputer and breaking it down into smaller, more manageable.
Databases uses many tasks simultaneously. The more CPU cores, the more tasks you can run. Multi-core processors allow multiple databases to be consolidated. Again, the increased memory bandwidth.
Cloud environments is heavy, and multi-core processors allow a company to quickly scale up the number of cores during peak computing times. Cores can be used as needed to optimize workloads and reduce energy.
Why application benefit from multi-core processors
Multi-core processors have been readily available in all laptops and computers since late 1990s. Multi-core processors is an integrated circuit in which two or more processors have been attached to enhance the performance, save battery power or reduce power consumption and this mainly helps in simultaneous processing tasks to be more efficient. Multi-core processors have its own benefits.
First and foremost, it helps in energy saving. Architects in most multi-core processors plays the main role in decreasing the number of embedded computers. Usage of multi-core processors help in reducing power consumption in which less energy will be wasted as heat and therefore it increases battery life. Next, true concurrency. True concurrency in multi-core processors inherent support for actual parallel processing within individual software application across multiple applications.
Multi-core processors help in the performance of application. It increases the performance by running multiple application concurrently. The diminished distance between cores on an integrated chip empowers shorter asset get to idleness and higher store speeds when contrasted with utilizing separate processors or computers. In any case, the measure of the performance highly dependent on core of number, the level of real concurrency in actual software and the use of the shared resources.
Furthermore, reliability and robustness mean that it tolerates faults and failures in a software. Reliability and robustness have been increased because of allocating software to multiple cores. This is done by limiting fault propagation from software on one core to another software. Multicore support tolerance against failure and faults by supporting failover from one core to another core.
Application benefit from multi-core by obsolescence avoidance. The utilization of multicore processors enables architects to keep away from technological outdated nature and improve viability and maintainability. Chip producers are applying the most recent specialized advances to their multicore chips. As the quantity of cores keeps on increasing, it turns out to be progressively difficult to get single-core chips. Last but no least, multi-core also saves hardware costs. This happens when using multicore processors, the architects has produced systems in which it only has fewer computers and processors.
Actual computing environment that benefit from multicore technology
Most of the parallel programming or processes would be benefit from the application of multicore technology, especially for concurrent applications. The lighter weight of multicores architecture can be developed, avoiding the issues of having unreliable communication and breakdown of individual computers. From the Oxford Dictionary, computing means the use or operation of a computer while environment generally means the setting or conditions in which a particular activity is carried on. A registering domain comprises of a PC framework its interfaces with different frameworks and the administrations given by its working framework to its clients and their projects. The evolution of computing environment is from Noninteractive Computing Environment to Interactive Computing Environment up to Real-Time, Distributed, and Embedded Computing Environments and finally Modern Computing Environments. A real-time calculation has explicit time requirements where OS in real-time condition guarantees calculations complete inside time limitations. The distributed environment empowers a calculation to utilize assets situated in a few PC frameworks through a system. Though, the embedded computing environment in where PC framework is a piece of particular equipment and runs calculations that control the framework. Modern computing environment has highlights of a few of the figuring conditions depicted before where OS utilizes complex techniques to oversee client calculations and assets.
One of the large scale systems for machine learning that operates in heterogeneous environments, TensorFlow utilizes dataflow charts to visualise computation, shared state, and the activities that change that state. The dataflow graphs nodes are mapped over the cluster of a machine and within various computational devices. For instance, in multicore CPUs, general purpose GPUs and Tensor Processing Units (TPUs). This engineering architecture enables flexibility to application designers as in previous “parameter server” structures the management and administration of the shared state are incorporated within the system. With the support of multicore CPUs and GPUs, special-purpose accelerators are able to perform significantly power savings and improvements.
By using multiple technologies, the dataflow executor in TensorFlow is able to run kernels parallelly. Besides, Eigen::Tensor is used to implement many operation kernels, that utilise C++ templates for generation of parallel code efficiently in multicore CPUs and GPUs.
The related work in deep learning is Caffe and DistBelief. Caffe is a fast open framework for deep learning while DistBelief is a large scale distributed multicore servers. Both of the framework are high performance framework that train definitively the neural network specified with multicore technology. On the other hand, Torch, a vital programming model for machine learning and scientific computation is opted for better control on order of execution, utilization of memory and optimization of power usage as framework such as Caffe and DistBelief are relatively challenging to add optimizers compared to compose models from existing layers. However, Torch is more useful in researching because it does not capable of utilise dataflow graph as means of portable representation across deployment, production training and experimentation in smaller scale.
By using multiple technologies, the dataflow executor in TensorFlow are able to run kernels parallelly.
Issues With Multicore Technology
Some of the issues related to multicore processor technology began during the adoption phase of the technology. With the transition from single-core processor technology to multi-core processor technology in desktop computers, which has previously been used only in supercomputers, the average programmer is faced with the difficult task of writing code for software that could utilize the multiple cores. The term for this task is known as parallel programming. The vast majority of programmers were complete novice when it comes to writing software that runs efficiently on multi-core systems. This includes coordinating multiple tasks to run on separate cores which will not result in a system crash. When a programme is parallelized, certain tasks are distributed among the processors. However, more often than not, these separate tasks require access to a shared memory cache to access data. A system can crash when one transaction is accessing memory and a second transaction needs to access the same part of memory if proper safeguards are not put in place. With this in mind, programmers are tasked with anticipating these concurrent activities and ensure that once a certain activity begins to access memory, it locks out other activities so they wait until the transaction is completed. Memory locks helps to speed up parallel systems when implemented correctly, however putting them into practice is complicated. For example, a deadlock occurs when two different applications acquire locks at the same time, which forces them to wait for each other.
Another issue with multi-core processors has to do with power and temperature. If two cores were integrated into a single chip without any modification, the chip theoretically could consume twice the power and generate a large amount of heat. In extreme cases, a computer may even combust if the processor overheats.
Moreover, if a programme is not optimised for a multi-core system, data starvation may occur where one or more processors may starve for data. For example, when a single-threaded application is run in a multi-core system, the thread would run in one of the cores while the other cores sit idle.
Cache coherence is also a problem in a multi-core environment because of distributed L1 and L2 cache. Since each core has its own cache memory, the copy of the data in the cache may not always be the most up-to-date version. Imagine a dual-core processor where each core has a block of memory in its private cache. One core writes a value to a specific location; when the second core attempts to read that value from its cache it will not have the updated copy unless its cache entry is invalidated and a cache miss occurs. If a coherence policy was not implemented, garbage data would be read and invalid results would be produced, leading to a programme crash.
High-performance computing is crucial in modern finance. Generally, the current value of financial instruments can only be estimated by complex mathematical functions that balance out potential future scenarios. To calculate the value at risk, you have to run a lot of these mathematical functions, and finally, you have to run these calculations constantly to keep up with the changing market data. While a lot of computing is very necessary in finance, effective computing is important because financial data centers are severely constrained by power and cooling. So, we can use multi-core processors to enhancing the efficiency of the computer with a fixed power supply and cooling budget. However, to execute efficiently on these multicore processors is not easy. ln finance, time is money, thus efficient computing and software development both are very important. By supporting multiple processing elements in each processor chip, multicore processor can achieve higher computational efficiency at the same level as the power is proportional to the square of the clock rate. So scaling performance by increasing the clock rate of a single processor is the least efficient. Further increases in high clock rates are impractical to some extent. This is because it consumed too much power and cooling requirements will be too high. In fact, the clock rate on a single core has fallen further as processor factories have stepped back from the rough edges to improve the power efficiency.
The Forward Financial Framework is an application framework for describing and implementing forward looking financial computations on high performance, heterogeneous platforms. The Forward Financial Framework allows the computational finance problem specification to be captured precisely yet succinctly, then by utilising both multi-core CPUs and FPGAs, efficient implementations in heterogeneous platforms is created automatically.