VxWorksSMP多核编程指南

上传人:学**** 文档编号:196744498 上传时间:2021-09-22 格式:DOCX 页数:38 大小:779.22KB
返回 下载 相关 举报
VxWorksSMP多核编程指南_第1页
第1页 / 共38页
VxWorksSMP多核编程指南_第2页
第2页 / 共38页
VxWorksSMP多核编程指南_第3页
第3页 / 共38页
VxWorksSMP多核编程指南_第4页
第4页 / 共38页
VxWorksSMP多核编程指南_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《VxWorksSMP多核编程指南》由会员分享,可在线阅读,更多相关《VxWorksSMP多核编程指南(38页珍藏版)》请在金锄头文库上搜索。

1、精品word学习资料可编辑VxWorks SMP多核编程指南本文摘自vxworks_kernel_programmers_guide_6.8第 24 章1. 介绍VxWorks SMP 是风河公司为VxWorks 设计的 symmetric multiprocessing ( SMP)系统;它与风河公司的 uniporcessor( UP)系统一样,具备实时操作系统的特性;本章节介绍了风河VxWorksSMP 系统的特点;介绍了VxWorksSMP 的配置过程,它与 UP 编程的区分,仍有就是如何将UP 代码移植为 SMP 代码;2. 关于 VxWorks SMP多核系统指的是一个系统中包含两

2、个或两个以上的处理单元;SMP是多核技巧中的一个,它的主要特点是一个OS 运行在多个处理单元上,并且内存是共享的;另一种多核技巧是 asymmetric multiprocessing ( AMP )系统,即多个处理单元上运行多个OS;(1) 技术特点关于 CPU 与处理器的概念在许多运算机相关书籍里有所介绍;但是,在此我们仍要对这二者在 SMP 系统中的区分进行详细说明;CPU :一个 CPU 通常使用 CPU ID ,物理 CPU 索引,规律CPU 索引进行标示;一个CPU ID 通常由系统固件和硬件准备;物理 CPU 索引从 0 开头, 系统从 CPU0 开头启动, 随着 CPU 个数的

3、增加,物理CPU 索引也会增加;规律CPU 索引指的是 OS 实例;例如, UP 系统中规律 CPU 的索引永久是 0;对于一个 4 个 CPU 的 SMP 系统而言,它的 CPU 规律索引永久是 0 到 3,无论硬件系统中CPU 的个数;处理器 (processor):是一个包含一个CPU 或多个 CPU 的硅晶体单元; 多处理器 (multiprocessor) :在一个独立的硬件环境中包含两个以上的处理器;单核处理器 (uniprocessor) :一个包含了一个CPU 的硅晶体单元;例如: a dual-core MPC8641D指的是一个处理器上有两个CPU ; a quad-cor

4、e Broadcom 1480 指的是一个处理器上有四个CPU ;在 SMP 系统上运行UP 代码总会遇到问题,即使将UP 代码进行了更新,也很难保证代码很好的利用了SMP 系统的特性;对于在SMP 上运行的代码,我们分为两个级别:SMP-ready :虽然可以正常的运行在SMP 系统上,但是并没有很充分的利用SMP 系统的特点,即没有利用到多核处理器的优势;SMP-optimized :不仅可以正常的运行在SMP 系统上,而且仍能很好的利用SMP 系统的特点,使用多个CPU 使多个任务可以同时执行,提高系统的效率,比UP 系统的成效更加明显;(2) VxWorks SMP OS特点VxWor

5、ks 单核编程( UP)与 SMP 编程在多数情形下是一样的;类似的,多数API 在名师归纳总结欢迎下载精品word学习资料可编辑UP 和 SMP 编程中是通用的;一些少数UP 编程中的 API 不能在 SMP 中使用;与此同时, SMP 中的一些 API 在 UP 中使用时表现的不是SMP 中的成效,而是默认UP 的成效,或者压根就不能使用(例如,task spinlock 默认表现为task lock );本小节将简短介绍一下VxWorks 的对称多处理器的一些特点:多任务:对于传统的UP 系统而言,处理多任务的方法是通过任务优先级对CPU 资源进行抢占式处理的;而SMP 系统就转变了这种

6、方法,它是实实在在的任务,中断的同时执行;实现同时执行的关键是多个任务可以在不同的CPU 上执行,当然这需要OS 的和谐把握;对于 UP 系统中多任务所谓的同时执行,其实只不过是CPU 的快速切换,占有 CPU 的任务由一个快速切换到另一个;在SMP 系统中,同时执行不是幻想而是实实在在存在的;任务调度机制: VxWorksSMP 系统中的任务调度机制与UP 中的类似,都是基于优先级的;不同的是,当不同的任务运行在不同的CPU 上时,可以实现两个任务的同时执行;互斥:由于 SMP 系统答应任务同时运行的情形存在,因此,在 UP 系统中通过关中断,锁任务调度等这些爱惜临界资源的手段在 SMP 系

7、统中将不再适用; 这种在全部 CPU 上通过强行关闭中断,锁任务调度的方法会影响到 SMP 系统发挥它的特点,将 SMP 系统带回到UP 系统的模式; VxWorks SMP 供应一套特别的任务间,中断间同步 /互斥的方法即 UP中的taskLock() 和 intLock() 等将会被VxWorksSMP供应的spinlock ,原子操作以及CPU-specific 等机制替代;CPU-Affinity :默认情形下,任意任务可以运行在任意 CPU 上; VxWorks SMP 供应了一种叫做 CPU-Affinity 的机制,即可以支配任务到指定 CPU ( CPU 规律索引)上执行;(3

8、) VxWorks SMP 硬件特点VxWorksSMP 系统要求硬件必需具备对称多处理器;这些处理器必需是一样的,处理器可以共享内存, 可以公正的拜望全部设备; VxWorks SMP 必需遵循 uniform memory access (UMA) 结构;图 1 显示了一个双CPU 的 SMP 系统名师归纳总结欢迎下载精品word学习资料可编辑图 1 SMP 硬件结构无论 SMP 系统中 CPU 的个数是多少,它们的重要特点是一样的:a. 内存对全部 CPU 可见, 不存在 “只属于某个 CPU 的内存” 的情形; 即任意 CPU 可以在任意内存中执行代码;b. 每个 CPU 都有 Mem

9、ory Management Unit(MMU); MMU 可以使任务在不同的虚拟内存中同时运行;例如,RTP1 的一个任务可以在CPU0 上运行,与此同时, RTP2 的一个任务可以在 CPU1 上运行;c. 每个 CPU 可以拜望全部设备;设备产生的中断可以通过可编程中断把握器发送到任意CPU 上执行;d. 通过多 CPU,任务和 ISR 可以实现同步;通过spinlock ,任务和 ISR 可以实现互斥;名师归纳总结欢迎下载精品word学习资料可编辑e. Snoop bus 的作用是使 CPU 之间的 data cache总是保持前后一样性;(4) VxWorks SMP与 AMP的对比

10、关于 SMP 与 AMP 系统中对内存拜望的对比如图2 所示:图 2 SMP 系统对内存的占用情形在 SMP 系统中, 全部物理内存被全部CPU 共享;内存空间可以用来储存VxWorks SMP镜像, Real-Time Process(RTP)等;全部 CPU 可以读,写,运行全部内存;内核任务,用户任务可以在任意 CPU 中执行;在 SMP 系统中,全部内存,设备被全部CPU 共享, CPU 之间的主要通讯是如何防止“同时拜望共享资源”的情形发生;名师归纳总结欢迎下载精品word学习资料可编辑图 3 AMP 系统对内存的占用情形在 AMP 系统中, 每个 CPU 对应一个 VxWorks

11、镜像的拷贝, 它们只能被对应的 CPU 拜望;因此, CPU1 中执行的内核任务不行能在 CPU0 的内存中执行,反之亦然;对于 RTP 也是一样的;在 AMP 系统中,一些内存是共享的,但是在这些共享内存中读写数据是严格受到把握的;例如,在两个 VxWorks 镜像中传递数据等;硬件资源依据 OS 被划分,因此 CPU 之间的通信只有在拜望共享内存时才会发生;3. VxWorks SMP 配置说明Spinlock的调式版本组件INCLUDE_SPINLOCK_DEBUG供应了 spinlock 的版本,这对调试SMP APP 有帮忙;在包含 INCLUDE_SPINLOCK_DEBUG的同时

12、,最好要加入INCLUDE_EDR_ERRLOG组件,它可以记录 spinlock 的错误信息;CPU配置参数组件INCLUDE_KERNEL组件中包含了一些对VxWorks SMP 参数的配置,包括:VX_SMP_NUM_CPUS代表 VxWorks SMP 的使能 CPU 个数;全部体系结构的最大使能CPU 个数如下: ARM=4 , IA32=8 ,MIPS=32 ,PowerPC=8 , VxWorks Simulator=32 ;ENABLE_ALL_CPUS默认是 TRUE ,代表全部已配置的CPU 使能; 这个参数也可以设置为 FALSE ,一般出于调试目的, 此时只有规律CPU

13、0 是使能的,只有通过 kernelCpuEnable() 才可以使能指定的CPU ;VX_ENABLE_CPU_TIMEOUT代表 CPU 使能超时时长,当ENABLE_ALL_CPUS是TRUE时,该值表示全部CPU 的使能时长,当ENABLE_ALL_CPUS是 FALSE时,在kernelCpuEnable() 被调用时,它用来表示CPU 的启动时长;名师归纳总结欢迎下载精品word学习资料可编辑VX_SMP_CPU_EXPLICIT_RESERVE表示将指定 CPU 排除在“可使用 CPU-Affinity属性的 CPU 池”之外;它是一个字符串, 如填写“ 2 3 7”,就代表 C

14、PU2,3,7 不能使用 CPU-Affinity属性;即不能通过taskCpuAffinitySet() 支配任务到这些CPU 上运行;当某个 CPU 被 VX_SMP_CPU_EXPLICIT_RESERVE包含,唯独能够使他们复原预留属性的方法是调用vxCpuReserve();4. 在多核 AMP 系统上配置 VxWorks SMP略5. 启动 VxWorks SMP在 WorkBench 开启后会有一个默认的SMP 的 simulator ,如图 4 所示:图 4 WR 自带的 SMP 虚拟机点击连接后启动,启动过程如图5 所示,代表目前已经进入VxWorks SMP 系统以及当前

15、CPU 的个数;名师归纳总结欢迎下载精品word学习资料可编辑图 5 SMP 虚拟机启动过程启动后在 SHELL 中输入 i 可以查看系统目前运行的任务,你会发觉两个们分别运行在两个不同的CPU 上;如图 6 所示;idle 任务,它图 6 SMP 系统任务运行情形6. VxWorks SMP 编程VxWorks 单核编程( UP)与 SMP 编程在多数情形下是一样的;类似的,多数API 在UP 和 SMP 编程中是通用的;一些少数UP 编程中的 API 不能在 SMP 中使用;与此同时, SMP 中的一些 API 在 UP 中使用时表现的不是SMP 中的成效,而是默认UP 的成效,或者名师归纳总结欢迎下载精品word学习资料可编辑压根就不能使用(例如, task spinlock 默认表现为 task lock );由于 SMP 系统的特别性,因此S

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号