| 图1 典型的多核CPU结构 |
例如,多核芯片如何管理共享资源就是一大挑战。在大多数情况下,多核CPU的内核拥有独立的L1缓存,共享L2缓存、内存子系统、中断子系统和外设(如图1)。因此,系统设计师需要让每个内核独立访问某种资源,并确保资源不会被其他内核上的应用程序争抢。
多核的出现还让系统设计变得更加复杂。如运行在不同内核上的应用为了互相访问、相互协作,需要进行一些独特的设计,如高效的IPC(进程间通信,interprocess communication)机制、共享内存的数据结构和同步原语(synchronization primitives)。
程序代码迁移(code migration)也是个问题。大多数系统厂商都在针对单核CPU架构的代码库上进行了大量投资。因而,这些公司需要有一个清晰的迁移策略,来使其代码可以最大化地利用多核硬件资源。
针对多核设计的操作系统可能会大大减少解决上述挑战所需的工作量,也可能增加另一些问题的复杂性。这全都取决于操作系统是如何支持多核芯片的多处理模式。多处理模式主要有以下三种:
非对称多处理(Asymmetric multiprocessing,AMP)——每个CPU内核运行一个独立的操作系统或同一操作系统的独立实例(instantiation)。
对称多处理(Symmetric multiprocessing,SMP)——一个操作系统的实例可以同时管理所有CPU内核,且应用并不绑定某一个内核。
混合多处理(Bound multiprocessing,BMP)——一个操作系统的实例可以同时管理所有CPU内核,但每个应用被锁定于某个指定的核心。
上述三种模式都有其各自的优点和缺点。每一个模式适合于解决某方面的特定问题,而且对操作系统的要求也各不相同。
非对称多处理(Asymmetric multiprocessing,AMP)
非对称多处理(AMP)给开发者提供了一个与传统单核CPU系统相类似的运行环境,使得开发者已有的一系列经验和知识可以继续加以利用;同时,这也为老程序的移植提供了相当大的便利性,AMP模式的运行机制使得开发者可以直接调控CPU内核运作情况;最重要的是,开发者可以使用标准的调试工具和技术来完成既定的设计。
AMP可以是同构的(homogeneous),也可以是异构的(heterogeneous)。前者是指所有内核运行同一种类型和版本的操作系统,后者则是指每个内核运行不同类型或版本的操作系统(比如一个内核运行QNX Neutrino RT,而另一个内核运行Linux)。



闽公网安备 35020602001684号