The choice between AMP, SMP, and BMP depends on the problem you're trying to solve:
As the following table illustrates, the flexibility to choose from any of these models lets you strike the optimal balance between performance, scalability, and ease of migration.
Feature | SMP | BMP | AMP |
---|---|---|---|
Seamless resource sharing | Yes | Yes | — |
Scalable beyond dual CPU | Yes | Yes | Limited |
Legacy application operation | In most cases | Yes | Yes |
Mixed OS environment (e.g., QNX Neutrino and Linux) | — | — | Yes |
Dedicated processor by function | — | Yes | Yes |
Intercore messaging | Fast (OS primitives) | Fast (OS primitives) | Slower (application) |
Thread synchronization between CPUs | Yes | Yes | — |
Load balancing | Yes | Yes | — |
System-wide debugging and optimization | Yes | Yes | — |