Jump to content

Asymmetric multiprocessing

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Thegathering (talk | contribs) at 18:53, 24 June 2008. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Note: This article refers to both asymmetrical multiprocessing and multiprocessors.

Asymmetric multiprocessing or ASMP is a style of multiprocessing supported in DEC's VMS V.3 as well as a number of older systems including TOPS-10 and OS-360. It varies greatly from the standard processing model that we see in personal computers today. Due to the complexity and unique nature of this architecture, it was not adopted by many vendors or programmers past its brief stint between 1970 - 1980.

Whereas a symmetric multiprocessor or SMP treats all of the processing elements in the system identically, an ASMP system assigns certain tasks only to certain processors. In particular, only one processor may be responsible for fielding all of the interrupts in the system or perhaps even performing all of the I/O in the system. This makes the design of the I/O system much simpler, although it tends to limit the ultimate performance of the system. Graphics cards, physics cards and cryptographic accelerators which are subordinate to a CPU in modern computers can be considered a form of asymmetric multiprocessing. SMP is extremely common in the modern computing world, when people refer to "multi core" or "multi processing" they are most commonly referring to SMP.

Introduction

Asymmetric multiprocessors and asymmetric multiprocessing (known as ASMP) are two technologies that were pioneered in 1970 by the Massachusetts Institute of Technology (MIT) and Digital Equipment Corporation (DEC)[1]. The technology references how ASMP designed computers relay and process data. ASMP allows applications to run specific subtasks on processors separate from the "master" processor. ASMP computers are comprised of multiple physical processors that are unique, and thus non symmetrical. These processors are defined as either master or slave, master processors are more capable than slaves and are given full control over what the slave processors do. ASMP is not in use in the modern world as it was rivaled by Symmetrical processing and symmetrical processors SMP, which we see commonly today. Consumers may be aware of SMP computing labeled as Intel's Core 2 Duo or Core 2 Quad and AMD's Athlon 64 X2 or Phenom processors. Intel started work on SMP in 1981 which marked the demise of ASMP in the consumer and corporate market.

Although hardware-level ASMP may not be in use, the idea and logical process is still commonly used in applications that are multiprocessor intensive. Unlike SMP applications that run their threads multiple processors, ASMP applications will run on one processor but outsource smaller tasks to another. Although the system may physically be an SMP, the software is still able to utilize it as an ASMP by simply giving certain tasks to one processor and deeming it the "master" and only outsourcing smaller tasks to "slave" processors.

Asymmetric hardware systems commonly dedicated individual processors to specific tasks. For example, one processor may be dedicated to disk operations, another to video operations, and the rest to standard processor tasks. These systems don't have the flexibility to assign processes to the least-loaded CPU, unlike an SMP system.

Processor symmetry

In a multiprocessing system, all CPUs may be equal, or some may be reserved for special purposes. A combination of hardware and operating-system software design considerations determine the symmetry (or lack thereof) in a given system. For example, hardware or software considerations may require that only one CPU respond to all hardware interrupts, whereas all other work in the system may be distributed equally among CPUs; or execution of kernel-mode code may be restricted to only one processor (either a specific processor, or only one processor at a time), whereas user-mode code may be executed in any combination of processors. Multiprocessing systems are often easier to design if such restrictions are imposed, but they tend to be less efficient than systems in which all CPUs are utilized equally.

Systems that treat all CPUs equally are called symmetric multiprocessing (SMP) systems. In systems where all CPUs are not equal, system resources may be divided in a number of ways, including asymmetric multiprocessing (ASMP), non-uniform memory access (NUMA) multiprocessing, and clustered multiprocessing (qq.v.).

Hardware ASMP

Overview

Asymmetrical multiprocessors are defined by the characteristic that each processor is unique (non-symmetrical). It is common to have one processor that has access to the memory map as a whole, and other processors which simply act as slaves to the main or master processor. Usually, these slave processors will have their own memory which is not tied to the primary processors memory. Slave processors are required to exchange data with the main processor through a partitioned segment of memory that is allocated solely for the purpose of communication. On computers such as the VAC 11/784 which contained four processors. Each unique processor could not talk to one another and had to speak to the master processor instead. Depending on the hardware in question, each processor may or may not be able to speak to one another directly.

Differences between hardware ASMP & SMP

In the symmetrical multiprocessor design, each processor is able to access the entire memory map, there are no master or slave processors. In this case each processor is non-unique and has equal power. This means that they can share memory between themselves and can interact with each other directly. regardless of how many there are in the system. People commonly confuse these architectures and as such it is important to define the differences between SMP and ASMP.

Software ASMP

Overview

Asymmetric multiprocessing (as opposed to asymmetrical multiprocessors) is the term that refers to software side ASMP. Just as one would refer to each unique die as a processor, in software each program or application is a process. ASMP for software means that all tasks/processes are unique (i.e non symmetrical). Thus a given task (such as your operating system or favorite game) would be assigned to a certain processor. In a more general context "a certain task not run on every processor". It is common for application which utilize ASMP to work in the following way. The main processor will determine what work needs to be done and will take the bulk of the load, from there it can create instances of the given task on other processors to complete work. Take a video rendering program, the main processor could run the application and the user interface, while offloading the rendering component to a slave processor. This type of action needs to be written into the software and is not decided at the hardware level. It is the programmers responsibility to determine what jobs should be completed by a given processor.

It must be noted that most applications will ONLY run on the master processor and that the slave processors can merely take on the role of completing tasks that the master processor asks. It is rare that an entire application will or can be run from a slave processor.

Differences between software ASMP & SMP

Symmetrical multiprocessing when referring to software, implies the exact opposite of ASMP. In regards to the operating system, SMP is able to spawn any process/task on any of the processors available. Because SMP systems have no master or slave processors, each logical unit is able to complete a given task. In an ASMP system, a certain processor may not be able to complete a task due to an inability to access the entire memory map, it must then be run from the master processor and given tasks by the master processor to complete. Once again it is up to the programmer to make sure the processors are being utilized to their maximum potential. It is a common conception that SMP programming is much simpler as any processor in the system can complete a given task, thus a programmer just needs to simply balance the workload between processors. in an ASMP environment, a programmer has to worry about whether a processor can complete a given task and how to make the processors communicate effectively to distribute tasks.

When most people refer to multiprocessing or multiprocessors, it is usual in reference to SMP systems and SMP operating systems. The current generation of operating systems (circa 2008) can all effectively utilize SMP. This can be observed by the end user by simply referring to their system process manager and watching the activity levels.

Asymmetric vs symmetric multiprocessing

History

Asymmetric multiprocessors date back to 1970, when they were first pioneered by MIT and DEC[1] as a modern computing technique. Their original design and product was called the PDP-6/KA10. In 1972 DEC rewrote their TOPS-10[1] monitor software which ran on the PDP-10.[1] This change allowed for the computer to utilize asymmetric multiprocessing. Furthermore in 1981 DEC continued their research into ASMP and produced the now defunct VAX 11 asymmetric multiprocessor. The VAX 11 had two separate designs including the VAX 11/782 which had two processors, and the VAX 11/784 which had four processors.[1]

Post 1981, asymmetric processing research and design faded and later disappeared.[1] Symmetrical processing came about during the same period and saw higher adoption along with use by larger companies such as Intel. As a result, ASMP seemed to disappear into the history books while SMP began to flourish. It was largely because ASMP was very complex and convoluted in its design, most of the technology was optimized for very specific applications (ones that could spawn smaller processes that needed computing ie Video editing applications that could outsource rendering to a separate processor). SMP is simply a collection of identical processors capable or processing any information that any one processor is given. Thus writing software and operating systems that are multiprocessing capable, was much more realistic for a SMP architecture.

ASMP-capable processors

Modern applications of ASMP

Currently there are no consumer level production computers that use asymmetric multiprocessor designs. There are, however, computers that are able to distribute tasks Asymmetrically. In theory you are able to use a Symmetrical processor to do asymmetrical computations. A programmer can choose to use one processor as a main, and only offload certain tasks to the other processor. Although each physical or logical processor is able to complete any given task, priority is given to one as the "master" processor, and the other is given the position of "slave".

The hardware architecture was abandoned in the early 80's and lost out to Symmetrical multiprocessors which was much easier to work with and provided a much simpler hardware build. It is common to see some applications using Asymmetrical traits within a symmetrical processing system. Such an example would be a video game that ran on one "master" processor and offloaded physics calculation onto the "slave" processor. Even though both processors are non-unique and equal, software can choose to utilize the processors in a master/slave fashion.

ATI pioneered a technology that allows their video cards to be used Asymmetrically (i.e Using one for Rendering and another for Physics) but this is once again a representation of Software ASMP.The hardware is identical and thus Symmetric, but is being used Asymmetrically through software intervention.

The Sony PS3 is an example of an extrapolated asymmetric multiprocessor. The cell processor has unique cores which compute only certain tasks, though it is a games console rather than a general-purpose computer.

Graphical Representation Of Asymmetric Multiprocessing

Below are examples of what a cluster of asymmetrical multiprocessors would look like. Observe the extremely unique nature of these designs and how only one processor has access to the I/O part of the system. As stated before, these systems work best and were originally designed to do very specific tasks. One processor may simply do physics calculations while another is dedicated to rendering 2D video. Above those two processors, will be a mater processor that hands out the tasks that need to be done.

Notice also that the main memory is not accessible by all of the processors. The master processor will usually relay information on a "need to know" basis, to the slave processors.

References

  1. ^ a b c d e f http://ei.cs.vt.edu/~history/Parallel.html History of Multiprocessing
  • Bell, C. Gordon, Mudge, J. Craig, McNamara John E. "The PDP-10 Family". (1979). Part V of Computer Engineering: A DEC View of Hardware Systems Design. Digital Equipment Corp.
  • http://www.byte.com/art/9403/sec7/art4.htm
  • Rajkumar Buyya (editor): High Performance Cluster Computing: Architectures and Systems, Volume 1, ISBN 0-13-013784-7, Prentice Hall, NJ, USA, 1999.
  • Rajkumar Buyya (editor): High Performance Cluster Computing: Programming and Applications, Volume 2, ISBN 0-13-013785-5, Prentice Hall, NJ, USA, 1999.

See also

Further reading