没有合适的资源?快使用搜索试试~ 我知道了~
首页VxWorksSMP多核编程指南.pdf
VxWorksSMP多核编程指南.pdf
需积分: 50 36 下载量 45 浏览量
更新于2023-03-03
评论 2
收藏 1.37MB PDF 举报
VxWorks多核编程 SMP amp 介绍非常详细,上手即用。非常适合想要了解VxWorks多核编程的各位;
资源详情
资源评论
资源推荐
VxWorks SMP 多核编程指南
本文摘自 vxworks_kernel_programmers_guide_6.8 第 24 章
1. 介绍
VxWorks SMP 是风河公司为 VxWorks 设计的 symmetric multiprocessing (SMP)系统。
它与风河公司的 uniporcessor( UP)系统一样,具备实时操作系统的特性。
本章节介绍了风河 VxWorks SMP 系统的特点。介绍了 VxWorks SMP 的配置过程、它
与 UP 编程的区别,还有就是如何将 UP 代码移植为 SMP 代码。
2. 关于 VxWorks SMP
多核系统指的是一个系统中包含两个或两个以上的处理单元。 SMP 是多核技巧中的一
个,它的主要特点是一个 OS 运行在多个处理单元上,并且内存是共享的。另一种多核技巧
是 asymmetric multiprocessing (AMP )系统,即多个处理单元上运行多个 OS。
(1) 技术特点
关于 CPU 与处理器的概念在很多计算机相关书籍里有所介绍。但是,在此我们仍要对
这二者在 SMP 系统中的区别进行详细说明。
CPU:一个 CPU 通常使用 CPU ID、物理 CPU 索引、逻辑 CPU 索引进行标示。一个
CPU ID 通常由系统固件和硬件决定。 物理 CPU 索引从 0 开始, 系统从 CPU0 开始启动, 随
着 CPU 个数的增加,物理 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-core Broadcom
1480 指的是一个处理器上有四个 CPU。
在 SMP 系统上运行 UP 代码总会遇到问题,即使将 UP 代码进行了更新,也很难保证
代码很好的利用了 SMP 系统的特性。对于在 SMP 上运行的代码,我们分为两个级别:
SMP-ready:虽然可以正常的运行在 SMP 系统上,但是并没有很充分的利用 SMP 系统
的特点,即没有利用到多核处理器的优势;
SMP-optimized :不仅可以正常的运行在 SMP 系统上,而且还能很好的利用 SMP 系统
的特点,使用多个 CPU 使多个任务可以同时执行,提高系统的效率,比 UP 系统的效果更
加明显。
(2) VxWorks SMP OS特点
VxWorks 单核编程( UP)与 SMP 编程在多数情况下是一样的。类似的,多数 API 在
UP 和 SMP 编程中是通用的。一些少数 UP 编程中的 API 不能在 SMP 中使用。与此同时,
SMP 中的一些 API 在 UP 中使用时表现的不是 SMP 中的效果,而是默认 UP 的效果,或者
压根就不能使用(例如, task spinlock 默认表现为 task lock )。
本小节将简短介绍一下 VxWorks 的对称多处理器的一些特点:
多任务:对于传统的 UP 系统而言,处理多任务的方法是通过任务优先级对 CPU 资源
进行抢占式处理的。而 SMP 系统则改变了这种方法,它是实实在在的任务、中断的同时执
行。实现同时执行的关键是多个任务可以在不同的 CPU 上执行,当然这需要 OS 的协调控
制。对于 UP 系统中多任务所谓的同时执行,其实只不过是 CPU 的快速切换,占有 CPU 的
任务由一个快速切换到另一个。在 SMP 系统中,同时执行不是幻想而是实实在在存在的。
任务调度机制: VxWorks SMP 系统中的任务调度机制与 UP 中的类似,都是基于优先
级的。不同的是,当不同的任务运行在不同的 CPU 上时,可以实现两个任务的同时执行。
互斥:由于 SMP 系统允许任务同时运行的情况存在,因此,在 UP 系统中通过关中断、
锁任务调度等这些保护临界资源的手段在 SMP 系统中将不再适用。 这种在所有 CPU 上通过
强行关闭中断、锁任务调度的方法会影响到 SMP 系统发挥它的特点,将 SMP 系统带回到
UP 系统的模式。 VxWorks SMP 提供一套特殊的任务间、中断间同步 /互斥的方法——即 UP
中的 taskLock() 和 intLock() 等将会被 VxWorks SMP 提供的 spinlock ,原子操作以及
CPU-specific 等机制替代。
CPU-Affinity :默认情况下,任意任务可以运行在任意 CPU 上。 VxWorks SMP 提供了
一种叫做 CPU-Affinity 的机制,即可以分配任务到指定 CPU(CPU 逻辑索引)上执行。
(3) VxWorks SMP 硬件特点
VxWorks SMP 系统要求硬件必须具备对称多处理器。这些处理器必须是一样的,处理
器可以共享内存、 可以平等的访问所有设备。 VxWorks SMP 必须遵循 uniform memory access
(UMA) 结构。
图 1 显示了一个双 CPU 的 SMP 系统
图 1 SMP 硬件结构
无论 SMP 系统中 CPU 的个数是多少,它们的重要特点是一样的:
a. 内存对所有 CPU 可见, 不存在 “只属于某个 CPU 的内存” 的情况。 即任意 CPU 可以在
任意内存中执行代码;
b. 每个 CPU 都有 Memory Management Unit(MMU) 。 MMU 可以使任务在不同的虚拟内存
中同时运行。例如, RTP1 的一个任务可以在 CPU0 上运行,与此同时, RTP2 的一个任
务可以在 CPU1 上运行;
c. 每个 CPU 可以访问所有设备。设备产生的中断可以通过可编程中断控制器发送到任意
CPU 上执行;
d. 通过多 CPU,任务和 ISR 可以实现同步;通过 spinlock ,任务和 ISR 可以实现互斥;
e. Snoop bus 的作用是使 CPU 之间的 data cache总是保持前后一致性。
(4) VxWorks SMP与 AMP的对比
关于 SMP 与 AMP 系统中对内存访问的对比如图 2 所示:
图 2 SMP 系统对内存的占用情况
在 SMP 系统中,所有物理内存被所有 CPU 共享。内存空间可以用来保存 VxWorks SMP
镜像、 Real-Time Process(RTP)等。所有 CPU 可以读、写、运行所有内存。内核任务、用户
任务可以在任意 CPU 中执行。
在 SMP 系统中,所有内存、设备被所有 CPU 共享, CPU 之间的主要通讯是如何防止
“同时访问共享资源”的情况发生。
图 3 AMP 系统对内存的占用情况
在 AMP 系统中, 每个 CPU 对应一个 VxWorks 镜像的拷贝, 它们只能被对应的 CPU 访
问。因此, CPU1 中执行的内核任务不可能在 CPU0 的内存中执行,反之亦然。对于 RTP 也
是一样的。
在 AMP 系统中,一些内存是共享的,但是在这些共享内存中读写数据是严格受到控制
的。例如,在两个 VxWorks 镜像中传递数据等。硬件资源根据 OS 被划分,因此 CPU 之间
的通信只有在访问共享内存时才会发生。
3. VxWorks SMP 配置说明
Spinlock 的调式版本组件
INCLUDE_SPINLOCK_DEBUG 提供了 spinlock 的版本,这对调试 SMP APP 有帮助。
在包含 INCLUDE_SPINLOCK_DEBUG 的同时,最好要加入 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 ,一般出于调试目的, 此时只有逻辑 CPU0 是使能的,只有通过 kernelCpuEnable()
才可以使能指定的 CPU。
VX_ENABLE_CPU_TIMEOUT 代表 CPU 使能超时时长,当 ENABLE_ALL_CPUS 是
TRUE 时,该值表示所有 CPU 的使能时长,当 ENABLE_ALL_CPUS 是 FALSE 时,在
kernelCpuEnable() 被调用时,它用来表示 CPU 的启动时长。
剩余37页未读,继续阅读
VxWorks_developer
- 粉丝: 116
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
- MW全能培训汽轮机调节保安系统PPT教学课件.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0