When I was a kid anything that was a computer, or had one in it, was pretty obvious. Computers weren’t "just everywhere". Now we’ve got multiple CPU chips on a board, multiple CPU cores on a chip, different kinds of cores on a single chip, multiple computer boards in a single chassis, … it goes on. These things are embedded in everything around us, all this hardware glued together to achieve something.
This brings us to software. Software has to evolve to keep up with hardware, and with the needs of users. With all these cores and chips and boards and systems running around, it gets a bit confusing. Software is what enables everything from multi-processing to "poly-processing". There’s a lot of buzzwords about it – SMP, AMP, POS, VOS, Real time kernel, Separation Kernels… but what does it all mean? And.. what’s it for?
Eventually these things will all become even more blurry. As the realization that the "system" is a composite of the hardware and software all together spreads beyond the aerospace and defense industries, the various specifications will have to cover a fusion of SMP, AMP, and partitioned systems.
For now, though… what I’m talking about includes:
SMP – Symmetric Multi-Processing – two or more cores running out of the same RAM, each processing parts of a shared task. The cores may or may not run the same exact OS, but often do.
AMP – Asymmetric Multi-Processing – this is where several separate computers process data as parts of an overall larger system. They may briefly share data, or have a limited amount of shared memory, but other than this each computer is a separate processing node.
SMP is comparatively new, but AMP has been available through packages like vxMP for a long time.
SMP and AMP are multi-processor applications, where multiple computers are connected together to achieve a larger goal. They both bring up issues of concurrency, and offer their own challenges for the implementer.
Way on the other end of the scale are what might be called "poly-processing computers" partitioned systems, where a single computer is virtually carved up and treated as if it’s really several computers. Each of those virtual computers can run a completely different OS – one for it’s rich applications and ease of install, one for it’s sophisticated communications abilities and firewall, perhaps even a third or forth to handle other kinds of processing. or devices. You can already share a PC between Windows and Linux (for example) using virtual machine software technologies. But did you know that similar things are being done with flight systems – using a single high-powered computer to replaces dozens of of single-purpose computers, to reduce weight, cost, and complexity?
SMP and AMP are for systems where one CPU can not possibly handle the work load before it. If the work can all be done in one "space" -simultaneously acquire data, process data in place, store data – SMP is a good fit, as all the processors run out of one pool of RAM. One processor can be tasked with managing / storing the pools of data, another can perform the processing-in-place.
If the work should be handled in separate spaces – say the processing can’t be done in-place for whatever reason – AMP would be a better fit.
In the case of poly-processing (via vitalization, etc), this paradigm fits more where you want to take advantage of the extra processing power of a modern computer to have it replace a number of older computers (or other devices), to save on weight and expense of a newer system with similar function. A Good examples of this could come from the shipbuilding and aircraft industries, where you have multiple separate mechanical and computational systems that may easily be replaced with smaller, lighter, more capable modern electronics. Each of these separate systems might still need a small general purpose computer to control them, but that can be costly and add weight. A single, modern, high-powered computer may be able to replace dozens of smaller, less capable systems.
With any of these paradigms it all comes down to: what is your application, how does it need to be accomplished, and does your system have enough processing capacity to achieve your goals.