虽然多核风暴愈演愈烈,但不可否认的是在多核技术的开发上,目前产业里还缺乏相应配套的开发工具和开发体系。多核技术的开发之路未来如何走?这是很多人关心的话题。“未来10年,在针对多核的开发工具和语言方面会有很大的变化!”风河公司CTO Tomas Evensen近日在接受电子工程专辑网站采访时这样对多核技术的未来进行了预测,“会出现更高级的编程语言以及效率更高的debug工具”。“对多核开发来说,选择合适的工具和方法至关重要!”
Tomas Evensen指出:“多处理技术是驱动多核处理器的原动力,多处理并不是各很新的技术,在某些应用领域如网络处理、服务器、嵌入式应用中它早已成为主流。”针对目前产业对多核理解上的差异,他强调:“多核就是一个包含带有多个独立程序计数器(Program counters)的多个不同处理引擎的单芯片。”
他指出目前多核技术主要面临四大挑战:
1、在器件应用方面,如何适应多处理需求?需要一种全新的算法吗?
2、在系统设计层面,任务和资源如何划分?如何选择硬件、OS、中间件和算法?如何分割、通信和同步?如何确保稳定性?
3、在软件开发和测试方面,因为多核应用本来就更复杂和更难调试,用什么来确保软件为多处理工作?中间件可以享受到多处理的优势吗?在这点上,微软研究院编程和工具主管Jim Larus就曾指出:“并行计算缺少算法、语言、编译器以及专业技术。” “长期来看,”他说,“我们需要更好地理解人们想利用并行编程做些什么,并学习如何在各种不同的并行机器上编写代码。”
4、在性能方面,高速缓存、内存和同步问题都会限制了性能。
他表示虽然多处理可以让一个任务更快完成,但是Amdahl定律告诉我们:系统中某一部件由于采用某种更快的执行方式后整个系统性能的提高与这种执行方式的使用频率或占总执行时间的比例有关。 因为有些任务必须是串行的,所以根据Amdahl定律,多核处理器能获得的并行速度提升=1(串行%+(1-串行%)/N)。如下图所示,所以针对并行速度的提升,并不是内核越多越好,只有当串行处理占的系统比例很小时才有很好的提升效果。
图1:从Amdahl定律看并行处理效果提升
所以,要考虑对应用进行很好的分割,在应用分割上,他提出了几个技巧:
1、 应用分割最好能独立于操作系统完成,把应用分成能运行SMP或AMP的多个进程,这些进程间的依赖性最小。
2、 对于有从属关系的数据分割,要定义准确那些需要共享的全局数据,使用合适的联动方法保护这些数据。
3、 避免数据的频率锁定(frequent locking of data),因为同步的代价比较大,可以考虑采用粗粒锁(coarse-grained locking)。
除了应用分割,由于应用程序的并行加速来自于其可并行化部分,所以要挖掘应用程序的多级并行性,这就是编译器必须考虑的主要问题之一。
在多核操作系统的配置上,Tomas Evensen指出目前主要是两种方式,一种是SMP( Symmetric multi-processing,对称多处理)。在这种情况下,一个操作系统把所有内核当成一个资源来处理,开发人员面对的并非是多个内核,而是单一的抽象化硬件平台,由SMP操作系统决定具体由哪一个内核来运行哪个任务,其中每个内核都是相同的,而且在同一个操作系统的管理控制之下,共享同一个内存。第二种是AMP (Asymmetric multi-processing,非对称多处理),在这种情况下,每个处理器内核都运行着各自独立的操作系统或控制软件,它们有自己专用的本地内存和共享内存资源。这种独立性意味着,系统中的各个处理器内核既可以是同构的,运行同样的操作系统,也可以是异构的,运行各自不同的操作系统。
针对这两种配置,他还提出了“AMP within SMP”的架构模式,他表示这一架构的好处是一个操作系统可以控制所有内核,可以简化启动、通信、共享内核以及调试。对于特定的内核绑定的任务有相似性(Affinity is used to bind tasks to specific cores),而且这个架构的扩展性比SMP要好。
在多核应用开发方面,他表示未来风河会加强和不同处理器厂商之间的合作,并针对处理器提供不同架构的实时操作系统(SMP和AMP)以及VxWorks和Linux设备专用软件开发平台。另外,他表示风河将加强调试和测试工具的开发,他指出风河已经在所有基于VxWorks的风河平台上推出支持对称多处理(Symmetric Multiprocessing, SMP)的VxWorks 6.6。
风河还将在Workbench开发套件和Workbench for On-Chip Debugging解决方案中提供SMP支持,使客户能够更快速地部署各种复杂的多处理器解决方案。
图2:风河对多核Run-Time的支持
图3:风河针对多核的调试和分析工具 |