最新日志

发表于:2007-4-19 21:06:56
标签:单核  多核  DSP  处理器  

6

开发多核(系统)准备计划书

作者:风河的高级技术规划主管Rob McCammon  February 08, 2007

文章来源:http://www.ednchina.com/blog/rob/

时至今日,我相信每一个基于DSP(数字信号处理)或CPU的嵌入式系统软件开发团队都会感受到多核处理器带来的影响。有时,这种影响或许只是一种似是而非的感觉,但有时却是直接而又真实的。

多核处理器可以给设备开发者带来更高的处理性能。但不幸的是,与提高处理器的时钟频率就可以直接提高处理性能形成对比;增加内核数量并不会自动使软件的性能得到提高。

大多数已写好的嵌入式系统软件都是为单核处理器编写的。一个计划在下个版本的设备上使用多核处理器的产品开发团队,首先将会面临软件方面的挑战。

如果你还不了解多核处理器,那么接下来的这篇文章(作者MichaelSuess),将从若干个重要的话题开始,带你了解多核处理器。

互斥锁介绍

•掌控线程安全性的简要指南

毋庸置疑,嵌入式软件开发团体对多核处理器所带来的潜在利益的肯定程度,将对多核处理器应用的推广速度产生决定性的促进。一些嵌入式应用, 例如数字信号处理和通信设备,对于多核处理器的应用有着与生俱来的优越性。事实上,这些设备已经频繁地应用多核处理器系统,并且是以适当的、直接的方式将多核处理器纳入其中。

可是,大多数已经写好的设备软件是针对单核处理器设备开发的,而且也没有采用多进程相关的技术进行编码。虽然一些像互斥和线程安全之类的概念已经比较普遍的应用在单核处理器的多任务操作系统中,但要把他们用于多线程或对于同步数据库访问程序的控制,仍然会遇到很多困难。

因此,我坚信,对于任何开发团队来说,当他们意识到单核到多核芯片转变的重要性并希望对其加以利用时,就首先需要建立一个发展计划。不然,就会像一个登山探险队在攀登珠穆朗玛峰的时候,只是简单的想到到出发和回来的路线而没有对沿途可能遇到的困难有所准备一样。我的这些想法也与Alan Zeichick在他的blog中所谈到的关于线程成熟度模型的需求不谋而合。

Alan Zeichick对线程成熟度模型的定义,第一次对如何在设备部署项目中解决多处理器的问题作了详细的说明,并在这些问题上为我们指明了方向。

通常而言,大部分的多核设备的软件执行都会采用共享内存/多线程模型、消息传递模型或将两者同时应用于并发管理。对线程成熟度模型的模拟是十分有效的,同时这些并发管理上的技术也足以说明“多任务成熟度”的级别在嵌入式系统中的重要性。

我建议,嵌入式系统软件工程师在进行多核开发前应该先指定一个《多核准备计划书(Multi Core Readness Plan)》,这样有助于他们提升自身的“多线程成熟度”等级。我已经开始考虑这样一个计划书应该包含什么内容,当然,我也很高兴你也在思考这一课题。

点击此处查看原文 >>

系统分类: DSP   |    用户分类:    |    来源: 原创

评论(0) | 阅读(3753)
发表于:2007-4-19 21:06:14
标签:多核  研究  单核  移植  

2

从哪里开始多核技术的研究?

作者:风河的高级技术规划主管Rob McCammon  December 12, 2006

文章来源:http://www.ednchina.com/blog/rob/

为了能够提高设备的执行速度,许多嵌入式开发项目正在考虑从单核处理器到多核处理器的移植。不幸的是,为了提高设备执行速度,将移植软件到一个多核处理器上,并不像为了提高执行速度而直接更换另一个更加高速的单核处理器那么简单。

想让一个软件在一个多核处理器系统上正确、高效地运行,需要经过仔细的思考、规划和实施。在开始时,仔细检查软件和设备工作情况,可以确保你的设备在并行的处理器中运转良好。

有一个简单但又被反复证明的例子可以说明这个道理,那就是,把九个女人集中在一起并不能将生一个的孩子所需的怀孕时间从9个月缩短到一个月。当然,和这个例子一样,并行处理器也不能缩短软件的运行时间。但是,n个女人却可以在九个月的时间里生出n个孩子。并行处理器潜在的优良特性,与你所遇到的问题和你定义性能的方式之间的联系是十分紧密的。

可以确切的说,每一个装有32位或者64处理器的设备上都能够并行地完成任务,并且允许更多的任务在特定的总时间内完成。这样,在分析多核处理器能给你带来多少好处之前,你肯定会提出一些重要的问题,那么就让我们带着这些设备在运行中可能存在的问题开始我们下面的分析。

1.为了找寻到并行性,你需要在应用程序中找多深?

2.这种并行性在你现存的系统构架和实现中的表现如何?

3.基于这种可行的并行性,完成你需要的工作会加快多少速度?

解决第一个问题,可以使你了解到,在下面这些情况中找到并行性的真正本质是多么的容易。有一个可以支持1000个并发的设备,如果这些并发作业都是相互独立的,那么在用户会话中可以轻松地在高抽象级中发现并行性。例如,对于一个在汽车中决定何时需要打开气囊的装置,在寻找并行性的时候,你大概需要投入更多的精力去研究细节。在寻找并行性的时候,这些并行性越是接近C/C++实现,就越是难以被利用。

对于第二个问题的答案,在你使用多核设备进行大部分软件创建时,就会看到它的用处。 如果你的软件部件原本已经计划要重复使用,那么你的软件与某些支持并行处理的事物是否足够吻合呢? 如果你的软件已经是多线程的了,并且在某个时间点有很多独立的任务可以同时运行,那么,你的状况就比较便于引入多线程。但你仍然需要关心条件竞争和死锁问题。虽然这些问题都不会发生在单核处理器上, 但是至少你已经把任务很好地分解成为适当大小的模块,以便能够在多线程环境中很好地配合运行。风河公司的 VxWorks 控制系统本来就是多重任务处理系统,而我们许多客户的系统里只存有少数的任务;但这些任务常常是反映设备的不同的阶段或者运作状态, 所以它们从本质上看并不是相互独立的。对于这类任务来说,要想采用并行的方式来运作软件并从多任务中受益,这并不是一件简单的工作。

对于第三个问题,你需要了解你希望通过并行处理带来多大的速度提升。对于这个问题, Amdahl's law 的百科条目(Wikipedia)是一个不错的开端。

在你花费很多时间考虑并行编程模型、选定操作系统并确定应该使用哪一款多核处理器之前,你需要仔细盘算一下,需要付出多少精力才能达到你的目标,还需要考虑使用并行处理可能给你的应用程序和软件带来多少好处。

点击此处查看原文 >>

系统分类: DSP   |    用户分类:    |    来源: 原创

评论(0) | 阅读(2490)
发表于:2007-4-19 21:05:01
标签:开源  硬件  软件  内核  

2

用于设备的开源硬件和软件

作者:风河的高级技术规划主管Rob McCammon   November 01, 2006

文章来源:http://www.ednchina.com/blog/rob/

最近,从风河公司和SUN公司传出一些新的消息,是一些关于风河公司新一代平台的消息。这种平台主要应用于网络,使用Linux操作系统,支持下一代的Sun UltraSPARC T1处理器。可能你对UltraSPARC T1的两个非常有意思的特性还不是很了解。

首先我要说明的是,单一的 UltraSPARC T1 处理器可以最多内置8个处理器内核,每一个内核同时支持4个线程,一般消耗电量72瓦。你可以在SUN Microsystems 网站上了解更多关于UltraSPARC T1的信息。这是一个多核架构处理器在节能和高性能两方面都有优异表现的有力证明。

其次,UltraSPARC T1中的设计技术已经有开源版本的源程序被GPL主动作为OpenSPARC 的一部分发布。 OpenSPARC T1项目主页声明 "将这次设计的源程序公开是为了长期的评估、交流和学习, 我们期望能够更加自由的和公开地研究有关多线程概念的构想,并且获得更加有益的创新。"

风河系统公司正在积极地参与一些成功的开源技术活动, 其中包括Linux 和 Eclipse, 并将这些应用引入到嵌入式软件。这两种开源技术,对在这里提到的Platform for Network Equipment, Linux Edition(应用于网络的Linux平台)起到了至关重要的作用。值得一提的是,这是风河系统公司第一次参与这种由开放源代码方式提供的硬件设计项目,并且得到了SUN Microsystems的有力支持。

在软件领域我们已经熟知开源软件,它结合了积极的开发者社团,通过生态系统方式来开发商业软件并提供相关支持,由此实现了良好的运作, 并且能够有力而高效地开创新技术。

有任何理由能够置疑同样的事情不会发生在硬件领域之上吗? Simply RISC公司已经作出了证明,他们已经打造了一颗与Sun UltraSparc T1不同的单核心版本, 目标是开发不需要使用4到8个核心的嵌入式应用程序。更多的关于Simply RISC公司的信息,可以到 linuxdevices.com网址查找或者登陆Simply RISC公司网站 Simply RISC website. 这是一个关于得到了开源技术支持,从而扩大了它的使用范围并且帮助延长了它的使用时间的生态系统开发方式的好例子。

我相信,在嵌入式领域,开源硬件和软件平台的结合是一种强强合作。多样性这一特征使得嵌入式市场别具一格, 标准开源技术,再加上一个有能力而且相互协作的社区,这样就可以在不进行重复开发的前提下,去迎合各种多变的应用。

有鉴于多核硬件和为多核处理器开发软件所具有的潜力和面临的复杂性,看起来,在第一批将多核硬件和软件集成起来的设备软件项目中,“多核”是其中的关键所在。

我希望能够听到大家对于开源硬件融入嵌入系统领域的想法。

点击此处查看原文 >>

系统分类: DSP   |    用户分类:    |    来源: 原创

评论(0) | 阅读(2407)
发表于:2007-4-19 21:02:43
标签:多核  处理器  软件开发  

2

多核处理器对设备软件开发的影响

作者:风河的高级技术规划主管Rob McCammon  October 25, 2006

文章来源:http://www.ednchina.com/blog/rob/

事实上,为了在可接受的功率限定下达到继续提升处理器运行速度的目标,处理器设计师们的探索已经从提升时钟速度的传统方法变为在一个设备中使用多个处理器内核的新方法。 这种转变是相当重要而明显的,这使得那些针对个人PC和商业计算机消费群体的广告商早已意识到,多核处理器技术是当前这一代系统中最主要的特性。多核处理器,在个人电脑/台式机/服务器的世界中,也将很快成为了主流。

同样的事情会发生在嵌入式领域吗? 它会以同样的速度发生吗? 对于嵌入式开发人员会有什么样的影响? 如果你还没有发现这样的问题,那么现在是思考时候了。

实际上,在很久以前,许多嵌入式系统已经采用了多核处理器。这种情况通常发生在一些对系统的性能和稳定性有较高要求的应用环境中,在这种情况下系统往往需要不只一块处理器。起初,每个处理器一般会安装在它专属的主板上, 多个处理器主板通过一个底板整合到一起。从某种意义上说,这种整合的主板确实对于在一个设备上使用多个处理器起了推动的作用。已经掌握了在系统级别下构造多处理器设备软件精髓的开发人员, 可能会觉得将组合的多核设备融入到他们的设计之中相对容易一些。

我相信,迈向多核处理器构架,同时放弃提高处理器时钟频率的最大影响是,首先需要许多软件开发人员进入到多处理器领域。了解这一点是非常重要的, 因为将基于单核处理器的架构移植到基于多核处理器的架构不是一件能够轻而一举解决的问题。

为多处理器系统编写软件将会成为嵌入式软件开发人员最重要的核心能力之一。我们要首先认识到,多核处理器技术是一个系统设计难题。在一开始,先要在互相融洽和彼此支持的方式下做出一些决定。有时,我们可能根据不同的情况得到不同的答案。

“在做出多核设计决定时必须考虑到应用”, 这是David Manners 在网站electronicsweekly.com 中所著的文章"多核处理技术将会激发出它的潜能吗" 中的核心主题。 Alan Gatherer ,德克萨斯州仪器公司通讯基础平台体系的技术总监,他的话也被引用到那篇文章之中,“我不确定谁知道如何构建一个通用的多核架构。那一个伟大的目标, 但失败的几率是百分之百。” 文章中描述了一些人们在发挥多核技术潜能时可能面临的挑战。

对于我们将要面对的应用问题,我们必须做出一些系统设计方面的决策,主要应包括以下内容:

1.我们的目标是在给定的时间内完成尽可能多的任务,还是尽可能快地完成一个特定的任务?

2.使用的这些处理器如何分配全部的任务? 采用串行执行或并行执行,哪一种方法更容易?

3.基于分区技术,应当在哪个层次上支持处理器之间的交互?

4.为了支持这种交互,需要什么样的硬件和软件基础平台体系?是让所有的处理器共享内存,还是将内存分配到每个处理器上,或是采用某种介乎于两者之间的方法?处理器是通过共享内存的方式进行通信,还是通过网络发送信息进行通信?所有的处理器是必须相同型号,还是可以使用不同种类的处理器?

这些问题将在一个确定的体系上找到答案;而这样的体系将是一个由各自独立的分布式处理器组成的连续统一体系;这些紧密结合的处理器将组成一个浑然一体、特殊的计算机引擎。这又反过来影响到我们如何设计和利用嵌入式软件,以便发挥多核处理器的优越性。

仅仅泛泛地说,许多情况都需要使用多核处理器,这并没有什么实际意义。事实上,对于一些特定的情况、特殊设备上,使用多核处理器是具有特殊意义的。下面罗列了一些可以适用在多核处理器上的使用理由:

•在有限的资源(功率,空间)环境下提升运行速度是使用多核处理器的共同原因。

•为不同的和互补软件的执行提供多重的环境。举一个例子,利用剩余的内核资源,在Linux系统平台环境下,使用一个或者多个内核组合一个实时操作系统运行。在很高确定性的操作系统或不能够很好的发挥实时操作系统的事实特性时,多核系统可以满足这样的应用需求。同时, 设备能够从很多的应用程序中受益,并能为Linux系统提供生态系统支持.

•另外一个例子,在一个多核设备上使用一个混合的操作系统。在这种操作系统上,复用以前在某个版本上开发的软件的同事进行另一个在另外一种操作系统上的软件的开发。

•为了降低成本,许多现存在的多重处理系统可以通过将多个单独的处理器更换为一个的更强大的多核处理器来巩固系统的性能。

•最终的结果是,我发现通过使用多核处理器可以在一个应用中区分不同的性能。一些系统由子系统组成, 而这些子系统必须满足不同层面的需求。这可能意味着不同级别的性能、验证、可靠性、安全性,或者智能保护特性。在这种情况下,不同的处理器内核支持不同的子系统,可以对这样的系统进行划分,从而用一个更简单的方式来满足不同类型系统的需求。

无论你希望多核处理器能给你带来什么, 衡量转变的成功与否取决于清楚明了的需求和对于系统设计方式的深思熟虑。现在, 你应该了解到,通过多核处理器轻松实现更快的搭建一个优化的设备,是需要付出很多努力的。

点击此处查看原文 >>

系统分类: DSP   |    用户分类:    |    来源: 原创

评论(0) | 阅读(1583)
发表于:2007-4-19 20:59:12
标签:解决方案  需求  建议  多核  嵌入式  

0

正确的需求加上好的建议等于更快得到优化解决方案

作者:风河的高级技术规划主管Rob McCammon  October 06, 2006

文章来源:http://www.ednchina.com/blog/rob/

有时,我们在现实世界的经验能够成为激发我们工作灵感的伟大资源。这一周,由于星期一晚上的暴风雨,使得我们家里停电大约48小时。由于水泵有电池供电,我们家的地下室在星期一晚上没向邻居那样被雨水淹掉。但是,到了周二下午,电池就没什么电了,雨越下越大,又没有来电的迹象, 而且更严重的是在电冰箱里的那些食物的温度还在储蓄升高, 我有了一个新的需要。

我的需要是在电力没有恢复正常之前给我的水泵和电冰箱提供足够的电力。有了确定的需求之后,我开始寻找一些合作者来讨论解决方案。 一些有相同处境的邻居帮助我想到使用发电机是最好的方法, 所以我带头去了Home Depot商店。 Home Depot商店的工作人员们能够处理我们的问题,并且确定了一个很好的、在不同情况下使用不同类型和款式发电机的解决办法,并且,还为如何在遇到更大的雨时快速地启动它提供了建议。

我觉得,在我这星期遇到的电力问题中的一些原则,正好可以用于设备软件以及设备软件的开发。

原则1:为了得到最好的解决方案,不要把你对于解决方案的主观猜测混淆成为你的需求说明。在我的关于“电力储备损耗”的例子中,我已经认为我的需要是一些新的电池或者一个快速再充电电池,用来及时让水泵恢复工作。但那种先入为主的想法会妨碍我从别人那里得到更好的解决方案,这样我就不会得到“发电机”这个更好的解决方案,也不会让它使我的冰箱制冷并使抽水机发动起来,我会永远使用充电电池,并且我需要一次又一次地更换电池。这样我们可以看到问题的关键:在描述需求时混进先入为主的构想是很容易的(例如:抽水机需要新的电池)。如果你草率行事,那么你就无法得到更好的办法。

原则2:你可以从一些对你的需求感兴趣的人那里得到相关的经验和看法,并用这些经验和看法来改进你的需求。在这个例子里,我的邻居和家得宝商店友好的工作人员做到了这些。

当提到软件时,我又想到了几个符合这些原则的例子。

多核处理器将更多地被应用在设备软件的开发领域。当构建基于多核处理器的设备时,最好的获得建议的来源是同样也在构建多核系统的同行。多核协会(Multi-core Association)为就是一个有效的来源。

Eclipse嵌入式软件开发平台项目提供了另一个和专家进行协作的途径,能够更好地得到有助于设备软件开发人员需求建议的例子。另外你将发现Doug Gaff的博客会是一个关于这个课题信息和观点的很好的资源。

无论你对于多核处理器所带来的机遇——更加高效、更加开放的嵌入式软件开发环境或其他可以提高你开发能力的方法有什么样的需求,以清晰的需求(没有受到先入为主的解决方案影响的需求)作为开始并且从所有同事、合伙人、供应商、学术界和各种各样的信息资源中得到有用的专业意见,是一个不错的想法。

点击此处查看原文 >>

系统分类: 嵌入式   |    用户分类:    |    来源: 原创

评论(0) | 阅读(1068)
发表于:2007-4-19 20:53:25
标签:嵌入式  设备软件  多核  

0

设备软件新方法

作者:风河的高级技术规划主管Rob McCammon  September 22, 2006

文章来源:http://www.ednchina.com/blog/rob/

我很荣幸能有机会同许多嵌入式系统开发人员一起交流,并有幸与许多致力于使设备软件开发更容易、更快速和更节省费用的人们一起工作。
大体上来说,在过去的十年中,设备软件开发的发展速度似乎已经超出了我们的控制能力。但这个并不是件坏事,因为这是对高性能设备需求的增长所带来的结果,而且人们希望看到的。

开发小组采取多种方法不断地改进他们开发嵌入式系统软件的方式。改进的资源包括:开发过程的改变、增强技术应用上的标准、更新开发工具和技术、增加内部和外部代码的重用度以及加强有效的合作伙伴资源。

在这个博客里,我打算分享我的资料,这可能是一些设备软件开发人员会遇到的挑战和一些能够在提高设备软件开发效率上带来突破的方法的资料。我希望你们也能和我分享你们的资源。由Mark Beriet开始的这个话题——转变我们处理复杂系统的方式(the approach we take to complex systems)是一个能引导我们实现突破性思维的典型事例。

应用新的、更好的方发去开发设备软件,这是势在必行的。前进的道路会是曲折的。当然,只有那些勇于开创不断进取的开发小组才能取得进步。

一些应用于设备的组件式软件开发方法很快就会成为现实。使用组合多个模块的方法建立软件的解决方案,使得可以在内部操作已定义的接口和底层基础结构,这样,在解决方案中开发和整合模块的工作量将被大量地简化。因而在这种软件解决方案下产生的软件,也能比通过单独的、不符合标准的集成软件建立的软件更容易维护和更新。软件通信体系结构(Software Communication Architecture)就是使用这个方法的例证。要了解更多的信息请登陆Wikipedia的软件通信体系结构(Software Communication Architecture)。为许多不同种类的设备组建面向工程的组件式结构是有可能的。

通常,给设备带来变革的技术也会给软件的发展带来机遇。新一代的多核处理器使得越来越多的人采用了多核技术。性能的提升也又一次地预示着新的挑战。在Tomas Evensen的博客中能够找到对这一挑战的介绍。

我期待看到其他人关于“内核挑战(core challenge)”的思想观点,也希望看到能够把我们引向更加优化的设备软件开发的最有前景的潜在解决方案。

点击此处查看原文 >>

系统分类: 嵌入式   |    用户分类:    |    来源: 原创

评论(0) | 阅读(945)
总共 , 当前 /