将软件推向未来多核架构
向多核处理的转变已彻底颠覆了计算行业长期以来的一个信条,即要提高软件性能就需要开发新一代硬件。以前,人们的期望大多寄托在日渐提高的时钟速度上,这是整个计算史上处理器演进的一大特点,然而最近这种情况有了改变。
功耗和散热问题引起了越来越多的关注,它使原本可预见的处理器工程的未来离开了提高处理器速度的轨道,而转向通过增加每块芯片上执行内核的数量来提高并行处理能力。处理器时钟速度的提高几乎没有为软件基本设计带来什么启示(除了诸如随性能增加可添加更多特性的能力外)。不过,上述新趋势对软件的灵活性提出了更高的要求,同时也意味着程序员要有更强的预见能力。支持这种扩展将成为软件实现性能和可扩充性的基本要求,也直接昭示着其市场竞争力。
多核处理如今已无处不在,从笔记本电脑到企业服务器等,应用范围极其广泛。它造成软件行业普遍开始在产品架构方面进行某种程度(通常是适当程度)的变革。现在,很多应用程序都经过了某种程度的线程处理,一般扩充至两颗、四颗或八颗虚拟处理器。这种级别的线程处理尽管很复杂,却较能接受不太理想的线程方法。
随着多核架构的持续演进,开发人员需要把线程技术作为解决方案的核心(而不仅仅是一项优良的特性)进行优化,而与线程制作、同步和锁定、线程粒度、调度和进程管理等相关的费用问题将随着时间的推移日益突出,且对并行可扩充性的规划将会变得越发重要。
为便于论述,在此有必要说明“多内核”一词在业内常见的两种不同用法。第一种用法是指包含大量执行内核的处理器架构;此类架构还有另一种不太常用的名称“大量多核”。第二种用法是指基于异构内核、具有图形处理或 TCP/IP 卸载等专用功能的处理器。本文采用的是“多内核”的第二种用法,而“大量多核”在此则指代含有同构 CPU 类内核的大型系统。
本文对一些基本的技术问题和与软件开发机构的多核未来规划相关的行业趋势进行了调查,旨在为决策者、有影响力的人和软件架构师提供一些指导,帮助他们制定恰当的方针和战略,进而在多核时代来临之际立于不败之地。