Choosing between AMP, SMP, and BMP

The choice between AMP, SMP, and BMP depends on the problem you're trying to solve:

  • AMP works well with legacy applications, but has limited scalability beyond two CPUs.
  • SMP offers transparent resource management, but software that hasn't been properly designed for concurrency might have problems.
  • BMP offers many of the same benefits as SMP, but guarantees that uniprocessor applications will behave correctly, greatly simplifying the migration of legacy software.

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