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 | — |