没有合适的资源?快使用搜索试试~ 我知道了~
VxWorks-SMP多核编程指南.doc
需积分: 13 2 下载量 10 浏览量
2022-12-06
10:32:46
上传
评论 1
收藏 677KB DOC 举报
温馨提示
试读
38页
VxWorks-SMP多核编程指南.doc
资源推荐
资源详情
资源评论
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 系统
图 Error! Bookmark not defined. 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 所示:
图 Error! Bookmark not defined. SMP 系统对内存的占用情况
在 SMP 系统中,所有物理内存被所有 CPU 共享。内存空间可以用来保存 VxWorks SMP
镜像、Real—Time Process(RTP)等.所有 CPU 可以读、写、运行所有内存。内核任务、用
户任务可以在任意 CPU 中执行。
在 SMP 系统中,所有内存、设备被所有 CPU 共享,CPU 之间的主要通讯是如何防止
“同时访问共享资源”的情况发生.
图 Error! Bookmark not defined. 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页未读,继续阅读
资源评论
ppcust
- 粉丝: 38
- 资源: 725
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功