欢迎来到天天文库
浏览记录
ID:23319012
大小:672.50 KB
页数:38页
时间:2018-11-05
《vworkssmp多核编程指南》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、VxWorksSMP多核编程指南本文摘自vxworks_kernel_programmers_guide_6.8第24章1.介绍VxWorksSMP是风河公司为VxWorks设计的symmetricmultiprocessing(SMP)系统。它与风河公司的uniporcessor(UP)系统一样,具备实时操作系统的特性。本章节介绍了风河VxWorksSMP系统的特点。介绍了VxWorksSMP的配置过程、它与UP编程的区别,还有就是如何将UP代码移植为SMP代码。2.关于VxWorksSMP多核系统指的是一个系统中包含两个或两个以上的处理单元。SMP是多核技巧中的一个,它的主要特点
2、是一个OS运行在多个处理单元上,并且内存是共享的。另一种多核技巧是asymmetricmultiprocessing(AMP)系统,即多个处理单元上运行多个OS。(1)技术特点关于CPU与处理器的概念在很多计算机相关书籍里有所介绍。但是,在此我们仍要对这二者在SMP系统中的区别进行详细说明。CPU:一个CPU通常使用CPUID、物理CPU索引、逻辑CPU索引进行标示。一个CPUID通常由系统固件和硬件决定。物理CPU索引从0开始,系统从CPU0开始启动,随着CPU个数的增加,物理CPU索引也会增加。逻辑CPU索引指的是OS实例。例如,UP系统中逻辑CPU的索引永远是0;对于一个4个C
3、PU的SMP系统而言,它的CPU逻辑索引永远是0到3,无论硬件系统中CPU的个数。处理器(processor):是一个包含一个CPU或多个CPU的硅晶体单元。多处理器(multiprocessor):在一个独立的硬件环境中包含两个以上的处理器。单核处理器(uniprocessor):一个包含了一个CPU的硅晶体单元。例如:adual-coreMPC8641D指的是一个处理器上有两个CPU;aquad-coreBroadcom1480指的是一个处理器上有四个CPU。在SMP系统上运行UP代码总会遇到问题,即使将UP代码进行了更新,也很难保证代码很好的利用了SMP系统的特性。对于在SMP
4、上运行的代码,我们分为两个级别:SMP-ready:虽然可以正常的运行在SMP系统上,但是并没有很充分的利用SMP系统的特点,即没有利用到多核处理器的优势;SMP-optimized:不仅可以正常的运行在SMP系统上,而且还能很好的利用SMP系统的特点,使用多个CPU使多个任务可以同时执行,提高系统的效率,比UP系统的效果更加明显。(2)VxWorksSMPOS特点VxWorks单核编程(UP)与SMP编程在多数情况下是一样的。类似的,多数API在UP和SMP编程中是通用的。一些少数UP编程中的API不能在SMP中使用。与此同时,SMP中的一些API在UP中使用时表现的不是SMP中的
5、效果,而是默认UP的效果,或者压根就不能使用(例如,taskspinlock默认表现为tasklock)。本小节将简短介绍一下VxWorks的对称多处理器的一些特点:多任务:对于传统的UP系统而言,处理多任务的方法是通过任务优先级对CPU资源进行抢占式处理的。而SMP系统则改变了这种方法,它是实实在在的任务、中断的同时执行。实现同时执行的关键是多个任务可以在不同的CPU上执行,当然这需要OS的协调控制。对于UP系统中多任务所谓的同时执行,其实只不过是CPU的快速切换,占有CPU的任务由一个快速切换到另一个。在SMP系统中,同时执行不是幻想而是实实在在存在的。任务调度机制:VxWork
6、sSMP系统中的任务调度机制与UP中的类似,都是基于优先级的。不同的是,当不同的任务运行在不同的CPU上时,可以实现两个任务的同时执行。互斥:由于SMP系统允许任务同时运行的情况存在,因此,在UP系统中通过关中断、锁任务调度等这些保护临界资源的手段在SMP系统中将不再适用。这种在所有CPU上通过强行关闭中断、锁任务调度的方法会影响到SMP系统发挥它的特点,将SMP系统带回到UP系统的模式。VxWorksSMP提供一套特殊的任务间、中断间同步/互斥的方法——即UP中的taskLock()和intLock()等将会被VxWorksSMP提供的spinlock,原子操作以及CPU-spec
7、ific等机制替代。CPU-Affinity:默认情况下,任意任务可以运行在任意CPU上。VxWorksSMP提供了一种叫做CPU-Affinity的机制,即可以分配任务到指定CPU(CPU逻辑索引)上执行。(1)VxWorksSMP硬件特点VxWorksSMP系统要求硬件必须具备对称多处理器。这些处理器必须是一样的,处理器可以共享内存、可以平等的访问所有设备。VxWorksSMP必须遵循uniformmemoryaccess(UMA)结构。图1显示了一个
此文档下载收益归作者所有