混合多处理(Bound multiprocessing,BMP)
由QNX倡导的BMP结合了SMP高级资源管理和AMP应用控制的混合功能。BMP跟SMP一样具有透明资源管理功能,不同的是,可以让开发人员将软件任务锁定在指定的内核上。而在SMP中,操作系统拷贝可以管理所有的系统资源,允许资源在应用程序间动态地分配和共享。
跟SMP相比,BMP带来了几大优势。它允许共享同一个数据集(data set)的应用独立地运行在同一个内核上,从而消除了SMP系统中会降低性能的快取置换(cache thrashing)。另外,由于一个应用中的所有执行线程可以运行在一个内核上,所以BMP可以提供比SMP更简单的应用调试。BMP还可以让为单核环境编写的传统程序正确地运行在多核环境,即让这些应用运行在某一个内核上。
在BMP系统中,锁定于一个内核的应用无法利用其他内核,即使其他内核处于空闲状态。这意味着,操作系统厂商可以提供工具来分析应用对CPU等资源的使用率,从而在内核之间分配应用来获得最大的性能。如果操作系统还能支持动态改变所指定的CPU核心,那么用户就可以更自由的让应用程序从一个核心转到另一个,不必为了要检查、停止和重新启动应用程序而担心。
图6所示的是运行在半双工模式下的BMP 系统。在Core 0和Core 1核心上分别运行着多线程的接收/传送进程。与SMP类似,操作系统完全清楚所有的内核在做什么,可以完整地看到系统的操作信息和性能信息,这有助于减轻开发人员的负担,使其不再需要分别从每个内核收集信息和分析整理这些信息。
![]() |
图6 BMP的半双工模式
在图7所示的控制面板/数据面板中。控制面板应用(CLI,操作、管理和维护,数据面板管理)运行在core 0上,而数据面板ingress和egress应用一起运行在core 1上。使用本地操作系统机制或同步受保护的共享内存结构,开发人员可以容易地实现进程间通信(IPC)。
![]() |
图7 基于BMP的控制面板和数据面板
作为界于AMP和SMP之间的中间路线,BMP为用户提供了一种可行的迁移策略。这些用户可能想向全SMP迁移,又担心现有的代码在真实的并行模式下无法正确运行。而在BMP中,用户可以先将以前的代码绑定在一个内核上以保证正确执行,然后逐渐向多核环境转移。
通过把应用(或线程)绑定在指定的内核上,设计人员从而把潜在的并行问题控制在应用和线程层面。解决这些问题将允许应用完全并行地运行,因而最大化地发挥多核CPU带来的强大性能。
