电子工程专辑
UBM China

有效利用RTOS编程概念支持先进的多线程架构

上网日期: 2007年03月20日 ?? 我来评论 字号:放大 | 缩小 分享到:sina weibo tencent weibo tencent weibo


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友

关键字:多线程? 线程环境? 多内核?

RTOS将唯一资源分配给唯一的TC。传统的做法是将单浮点单元(FPU)分配给TC0。任何执行硬件级浮点运算的线程都需要被映射为TC0,因此所有这类线程必须共享TC0。这就形成了多种有趣的编程选择,特别是用硬件还是软件实现浮点运算的选择。

用硬件实现浮点运算显然速度会更快,但另一方面需要共享FPU。如果线程只做少量的浮点运算,那么用软件实现将更有意义,而需要密集浮点运算的线程通常要用硬件实现,并被映射到TC0。值得注意的是,这个修改不需要记录,因为是否用硬件或软件浮点实现的决定可以由编译器切换实现。

给线程分配权重

如果程序没有给各个线程定义权重,那么程序调度器就会给所有线程分配相同的权重,另外也可以使用时间分段技术使线程依据用户指定的权重共享CPU周期。分配权重相当于将适当比例的CPU周期分配给各个具体线程。线程权重由RTOS透明地映射为硬件TC。

一些现有程序是针对传统处理器设计的,其前提条件是假设在有高优先级的线程"准备好"时低优先级线程将被禁止运行。在嵌入式编程环境中,准备好的意思是线程运行所必需的全部条件都得到了满足,阻止它运行的唯一因素是它的优先级。

多线程可破坏这种条件,因为无论高优先级线程是否停止,低优先级线程都能运行。编写取消这种状态的代码可优化性能。

另外一方面,根据这种条件编写的现有代码无需修改就能运行在多线程处理器上,只需简单地设置操作系统开关,使其只允许相同优先级的线程同时被加载到TC。在设置这个开关时,需要确保给那些能够并行运行的线程尽量分配相同的优先级。

可中断的重要性

在传统的嵌入式应用中中断是非常重要的,因为它们提供了主要的、在许多情况下也是唯一的线程间切换方式。中断在多线程应用中也起着相同的作用,但有一个重要的区别,即在多线程应用中,线程间的切换不仅要通过中断,还要使用空闲CPU周期。

需要尽量避免在修改关键数据结构时中断某个线程,同时起用另外一个线程对同一结构作其它修改。这将导致数据结构处于不一致的状态,极易引起灾难性后果。

大多数传统应用解决这个问题的方法是,当ISR或系统服务正在修改RTOS中关键的数据结构时暂时锁住中断。这种方法可靠地阻止了任何其它程序跳进来对执行代码正在使用的关键区域做出不恰当的修改。

然而在多线程环境中这种方法是不够的,因为有可能被切换到不受中断锁定控制的不同TC,从而可能对关键区域做出修改。该问题可以利用34K架构中的DMT指令解决,当数据结构在修改状态时可禁止多线程功能。

除了这些相对简单的例外情况外,设备代码在从传统设备移植到多线程设备时无需修改就能直接运行。因此,我们能够利用以往被传统RISC处理器浪费的CPU周期,充分发挥多线程性能优势。多线程可以满足当前和未来需要高性能的消费类、网络、存储和工业设备应用要求,而成本和功耗只有少许的增加。

与主要的竞争技术--多内核技术相比,多线程有更小的硅片面积和更低功耗的优势,而且编程简单,现有程序只需做少量修改甚至不用修改就能运行。多内核方法也有它自己的优势和强项,因此没有理由证明这两种方法不能融合出一种"最佳方法"。在要求高性能、低成本和最小功耗的应用场合,多线程是一种极具竞争力的方案。

作者:

John A. Carbone

产品行销副总裁

Express Logic公司


?第一页?上一页 1???2???3???4





我来评论 - 有效利用RTOS编程概念支持先进的多线程架构
评论:
*? 您还能输入[0]字
分享到: 新浪微博 qq空间
验证码:
????????????????
?

关注电子工程专辑微信
扫描以下二维码或添加微信号“eet-china”

访问电子工程专辑手机网站
随时把握电子产业动态,请扫描以下二维码

?

5G网络在提供1Gbps至10Gbps吞吐量方面具有很好的前途, 并且功耗要求比今天的网络和手机都要低,同时还能为关键应用提供严格的延时性能。本期封面故事将会与您分享5G的关键技术发展,以及在4G网络上有怎样的进步。

?
?
有问题请反馈
推荐到论坛,赢取4积分X