With SMP, identical cores are assigned portions of an aggregate workload under the control of a single SMP-enabled OS. This is common in many compute-oriented applications, like medical imaging, running on a general purpose OS like Linux. AMP involves the use of interprocessor communication to combine the efforts of multiple processors, each with its own local operating system and hardware resources. AMP differs from SMP in allowing the use of heterogeneous processors and operating systems as well as the homogeneous environment supported by SMP. Also, AMP involves less OS overhead for each individual processor and a more traditional execution environment for applications. An example is a data-plane/control-plane application that requires both I/O- and compute-oriented cores running an RTOS and a general purpose OS, respectively.
SMP has more inherent code dependencies than AMP because the cores are more likely to contend for the same data as they execute similar code. However, AMP has its own issues with different cores sharing information, using interprocessor communication (IPC) and requiring semaphores. Sharing data can lead to data corruption and other parallel code challenges.
Since both SMP and AMP systems execute tasks simultaneously; and therefore, must manage shared resources and timing interactions, developers will depend on visual tools for multi-core processing in either case.
Wind River Workbench, based on the Eclipse platform, is a collection of visually-oriented tools that supports both SMP and AMP system architectures. This includes a) Linux running in both SMP and AMP configurations, b) VxWorks, Wind River's popular RTOS, supporting AMP, and c) Linux and VxWorks in a mixed AMP configuration. VxWorks SMP support is currently under development.