究竟普通开发者是否需要面对多核,这个问题在很多地方都在讨论。很多人都认为不需要,这样说是基于过去几年的经验,认为目前的一般应用单核高速CPU已经足以应付,今后也没有新的重要应用驱动我们使用多核CPU,多核CPU要么是厂商狗急跳墙,要么是仅供科研计算,谢绝参观。
我不这么认为。
可以从两个角度来认识这个问题。
其一,现在单核CPU已经逐渐淡出市场,新生产的机器全部是双核。因此未来新增的计算机全部都会是多核,这是不以软件开发者意志为转移的。同样不以我们意志为转移的是,在激烈的竞争中,更有效地运用用户资产、提供更优异性能、更强壮的稳定性的一方会占据优势。你可以继续向用户重复说,其实单核就够了,没必要改进程序。你的用户也许会相信你一时,但是长期来看,当他的机器有4个核,8个核的时候,他一定会迁徙到更能够有效运用其机器资源的方案上去。结论是,竞争导致程序的多线程化势在必行。
也许这个观点不是那么有说服力。你可能会说,你可以凭借其它的优势稳住客户,并且这些优势肯定不会被对手抄袭。但愿你好运。可是第二个潮流恐怕就无法抗拒了。那就是新的应用。
1980-2000,曾经在将近20年的时间里,硬件的能力与软件对CPU的贪婪一直齐头并进,打造了软件最辉煌的20年。然而2000之后,我们似乎陷入了一个CPU计算能力过剩的时代。突然一下子大家感到没必要追逐CPU主频了,因为现有的计算能力完全够用,而且也想不出新的应用。于是很多人觉得,软件的历史终结了。
这是完全错误的。
我认为这几年出现的CPU计算能力过剩、新型应用发展停滞只是一个带有迷惑性的假象。造成这个假象的原因有三点,一是互联网的爆发转移了软件创新的重心,而网络带宽和可靠性均不理想,成了制约计算机整体performance的短板,相对来说,CPU的计算能力反而成了长板,显得过剩了。二是互联网使得计算向服务端集中,从而弱化了对客户端计算能力的需求。三是信息家电、数字家庭、Internet连入设备、民用机器人的发展仍处于初级阶段,新的计算平台还不成熟,人们的思路一时被束缚在成熟的PC平台上,无法展开。
然而上述三个问题都将会被一一破解,从而唤起对多核力量的渴望。
首先,网络带宽会迅速提升,使得一些新的应用出现,尤其是高质量的在线视频和视频交互应用(如远程教学,远程医疗)会对CPU运算能力提出前所未有的挑战。现在大家都习惯了模模糊糊、时断时续的网络视频,我相信5年以后我们一定会感叹自己当年的忍耐力。其次,互联网应用的发展趋势,RIA,尤其是P2P向传统应用的渗透,使得计算重回客户端。未来我们的机器可能不会是真正意义上的是Personal Computer,而是Community Computer或者Social Computer,在由计算机组成的社群里承担一份义务,这就会对普通电脑提出新的计算要求。举一个例子,未来你可能会受邀加入一个免费的视频电话网络,条件是你必须允许你自己的笔记本在线时充当一个路由器。你会如何选择?第三,新的计算设备将会在未来几年内发展起来,这些设备上可能没有成熟的操作系统,或者虽然有成熟的基础平台,但是没有足够理想的抽象层,同时对于可用性、可靠性的要求远高于PC。开发者将不得不亲手处理一些系统级的细节,在这种情况下,多线程程序设计的技术会变得非常重要,机会属于那些能够驾驭并充分发挥硬件能力的程序员。
综上所述,从现在算起,2-3年之内,多核程序设计(其实就是多线程程序设计)将成为软件开发领域的热门主题。这是我的一个估计,且拭目以待吧。
分享到:
相关推荐
改进了IMC构建多核系统任务调度算法的功能模型,扩展aCSL从逻辑层次上刻画任务调度算法的性能指标,并基于改进的IMC和扩展的aCSL提出了一种多核系统任务调度算法动态度量方法实现对任务调度算法的功能验证和性能评价...
在多核系统中,任务调度是决定系统性能的关键因素之一。为优化任务调度,基于一些典型的任务调度算法(如PPA,徐成提出的算法等),提出了一种新的任务调度算法。该算法一方面合理确定前驱任务复制的先后顺序,而且...
基于多层AHB架构的多核SoC设计的论文,有一定的参考价值。
关于多核方面的论文,在通过多核实验的操作之后对多核的简单理解
AMD多核补丁AMD多核补丁AMD多核补丁AMD多核补丁
Intel多核培训Intel多核培训Intel多核培训Intel多核培训
多核编程模型多核编程模型清华大学计算机科学与技术
处理器从多核到众核的详细叙述文章 其实“多核”这个词已经流行很多年了,世界上第一款商用的非嵌入式多 核处理器是2002年IBM推出的POWER4。当然,多核这个词汇的流行主 要归功与AMD和Intel的广告,Intel与AMD的...
作者都是长期供职于Intel公司的资深软件工程师和结构师,书中融入了他们自己丰富的软硬件开发经验,可以为面向多核体系结构进行并行程序设计的开发人员提供巨大的帮助。不论对从未接触过并行程序设计的开发人员,...
在单芯片多核系统中,NoC已成为主流片上通信架构。有效的任务调度是挖掘计算并行性的重要方法。在经典静态列表调度基础上,针对HEFT算法中节点排序会得出较多的优先级相同节点的问题,提出一种节点二次排序的调度...
Intel多核培训3.rarIntel多核培训3.rarIntel多核培训3.rarIntel多核培训3.rarIntel多核培训3.rar清华大学提供
《多核应用编程实战》是一本全面实用的多核应用编程指南,旨在介绍如何编写功能正确、性能优越且适合扩展为在多个CPU核心的系统运行的应用程序。《多核应用编程实战》面向多种操作系统和处理器类型引用程序示例,...
多核编程技术指南 多核编程技术指南 多核编程技术指南
多核操作系统调度算法研究资料,自研操作系统
汽车多核嵌入技术发展论文.doc
针对传统算法在外界环境及目标运动导致外形变化的影响下跟踪效果不稳定的问题,提出一种鲁棒的多核学习跟踪算法,将Boosting提升方法引入到多核学习框架中,用比传统多核学习算法更少的样本训练,构建出基于互补性...
多核编程之挑战与应对 多核编程之挑战与应对
利用多核编译基于VC编译器的Makefile,提升编译效率。