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.
|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||—|
|System-wide debugging and optimization||Yes||Yes||—|