论文部分内容阅读
高度并行化处的处理器目前有望达到每秒万亿次运算的性能水平。而可编程性成为这些处理器超越硬连线加速器的优势,但目前尚不清楚的是,除了数据密集型的工作外,这样一块集中了数以百计的内核的芯片是否也可以造福其他的用途?通用电脑仍需要一种能够像提高频率那样提升其性能的解决方案。而且,谈到通用性的计算性能时,我估计大多数人都希望这种技术的进化能持续下去,既提升我们的计算机速度,又保持系统兼容性,以让那些昂贵的程序能继续体现其价值。
不妨以交通工具的演化为例来说明:从马匹和马车,到汽车、电车、火车、轮船、飞机、一直到火箭推进的航天飞机,再到空间站,我们之所以发明这么多种手段,就是为了能跑得更快和改进我们移动自己位置的方式。我们能够去更多的地方,旅行时间变得更短,而且大多数交通工具的使用也越来越方便。
直到几年前,电脑的发展也是遵循同样的方式。提高存储容量,它就能做得更多;提高主频,它就能做得更快;改进界面,它的使用就变得更容易。
主频确实非常重要。不只是因为台式机和笔记本靠它做卖点,而且也因为它让我们能攻克某些程序方面的障碍,比如阿兰图灵算法。更确切一点,是突破数学、逻辑、程序控制的基本运算方面的障碍。诚然,我们可以把多个指令融合起来,并用一个助记码来命名。我们如何命名一组指令以及它在编译程序员看来如何精致都不重要。不论单独调用还是作为指令集调用,整数求和、逻辑运算或者条件分支仍必需执行。进一步说,还需要把两个操作数带进加法器中,把结果写入寄存器或内存中。
不提高主频,就无法使我们这些最基本的操作变得更快。不幸的是,主频的提升撞上了半导体物理技术的“硅墙”。但就像内燃机技术在速度上输给喷气发动机一样,我们还是有希望可以开发能够继续提高主频的技术。毕竟,电脑技术已经从真空管过渡到晶体管平台了。但就算主频的提升能够继续,我们唯一能够实现算法加速的途径仍然是基础运算的并行执行。
这就是我们面临的困境:知道如何编制单个引擎,却不能提高它们的运行频率;知道如何设计具备数以百计内核的芯片,却没有高产出率的软件来对其进行编程。
不过,幸运的是我们本身就具有并行运算技术。人脑可不是一个在太赫兹频段运行的单核处理器。并行运算,迫使我们把算法的单核处理器实现方式分解为更多的部分。这就不仅是一个硬件性的任务了。话虽这么说,但与在概念和软件方面一直期待的突破相反,硬件架构设计再次处于先导地位,已经带来了数以百种的处理器变种,其发展趋势也在大家的意料之中。与早年遇到的困难相比,更好的工具的出现,可以使处理器的实现变得更为容易。现在,我们对计算机架构的基本原理有了更好的理解,能更容易地制定出合适的指令集架构定义。很多大学已经与处理器生产厂商联手发布新的架构。其中几个实例是斯坦福大学的流处理器架构(StreamProcessors)、麻省理工学院的RAW架构(Tilera的TILE64)、德州大学奥斯汀分校的TRIPS架构。
然而,与过去的成就相比,可以看到软件在这方面没有取得任何实质进展。这可能是多年前架构类型为数更少所造成的。
在70年代和80年代,开发难度和具体实现方面的成本仅允许人们在几个方面进行创新,大多数情况是在单处理器通用架构方面。为数不多的项目则是一个福音。这些都有望带来系统与应用程序的大量销售。开发者关注于用大批程序员来开发出更好的工具,而且要让更多的人来使用它们。软件可以从存储容量的提高和处理器性能的提升上获益。它可以让应用程序员们撇下汇编语言,而乐于采用像C和C++这样更高级的语言,虽然其工作效率有所降低,却具有更高的产出能力。而程序员们能完成更多任务,速度更快并采用可视化语言——它们变得更容易操作。
相比之下,我们就会发现,今天提供的各种并行化的各种内核运算指令集架构(ISA)相互之间基本上是不兼容的。它们将软件工具和应用程序的目标零散化了。处理器厂商所能提供的只是略加修改的单核处理器工具,因为在对特殊处理器提供支持方面,独立软件商们还没有什么强有力的原动力。
应用程序员现在必须“手工”把代码分段,再分配到多个处理器中运行。他们需要优化代码,以利用,或者说适应片上专门化的总线和内存配置。这一类工作,通常是由充满耐心的数学家和只能靠并行运算才能及时获得结果的其他科学家们来完成。
不停的尝试,通过建立架构概念和从科学运算中获得的教训,许多软硬件设计师们创造了优良的、数据密集式引擎和针对高性能应用开发的代码,如音频/视频,基础设施,信息网络,影像技术等。大多数内核的指令集架构还是传统的,并不支持并行结构。编程工具仍然是C和C++,这些工具适合于编写运行于单核上的程序。
目前号称采用多个平行引擎的通用处理技术还有待展示。该技术在何处可以不必依赖于上百万的、为x86等通用处理器编写代码的程序员?
Intel、AMD和其他的采用了若干片上内核的生产者们,推进了性能的非凡提升是世所公认的,他们可能有最好的答案。这些公司拥有很好的机会去传授,并吸引数以百万计的程序员,经过周密的研究和注意兼容性后,几个内核上的长线程被变换为多个内核上运行的更短的线程。
嵌入式和通用式电脑的设计师们在实现系统方面总是做出不同的选择,而他们采用并行处理时,也将继续体现出不同工作要求所造成的不同的影响。
在嵌入式系统世界里,大多数处理器的用途就是数据密集型应用。来自销售部门的信息彰现出拥有跟踪技术的完全可编程的并行引擎的优点,相比之下,包含硬连线芯核的异构结构具有较低的灵活性。
某些需要大规模并行处理器需要应用能提供有力支持,而某些系统代码很难编写。对其进行重新编程或增加新的功能和标准十分复杂,所需的时间和费用很可能与开发采用简单并行段、硬连线加速器和可运行操作系统的处理器异质架构的时间和费用相接近。今天的成功注定只能由上述几种为数很少的同质的并行处理器所取得,这些处理器要通过良好的功能特色、工具和出色的销售,来实现其在嵌入式领域中的运用。
台式电脑和笔记本电脑处理器的设计必须更趋保守。它们的发展将会放缓,因为它们更倾向于采用几个内核,而不是数十个或上百个内核。研究更多集中在少量的内核和智能高速缓存之间的通信上。其间,软件开发工具受到的影响很小,但对整体性能的改善将在更多的细节体现和不再那么遥不可及,优于大规模并行处理器在数据密集型领域的应用表现。
终有一天,我们一定能够以高清标准来玩游戏和看电影。
(译自《微处理器报告》)
不妨以交通工具的演化为例来说明:从马匹和马车,到汽车、电车、火车、轮船、飞机、一直到火箭推进的航天飞机,再到空间站,我们之所以发明这么多种手段,就是为了能跑得更快和改进我们移动自己位置的方式。我们能够去更多的地方,旅行时间变得更短,而且大多数交通工具的使用也越来越方便。
直到几年前,电脑的发展也是遵循同样的方式。提高存储容量,它就能做得更多;提高主频,它就能做得更快;改进界面,它的使用就变得更容易。
主频确实非常重要。不只是因为台式机和笔记本靠它做卖点,而且也因为它让我们能攻克某些程序方面的障碍,比如阿兰图灵算法。更确切一点,是突破数学、逻辑、程序控制的基本运算方面的障碍。诚然,我们可以把多个指令融合起来,并用一个助记码来命名。我们如何命名一组指令以及它在编译程序员看来如何精致都不重要。不论单独调用还是作为指令集调用,整数求和、逻辑运算或者条件分支仍必需执行。进一步说,还需要把两个操作数带进加法器中,把结果写入寄存器或内存中。
不提高主频,就无法使我们这些最基本的操作变得更快。不幸的是,主频的提升撞上了半导体物理技术的“硅墙”。但就像内燃机技术在速度上输给喷气发动机一样,我们还是有希望可以开发能够继续提高主频的技术。毕竟,电脑技术已经从真空管过渡到晶体管平台了。但就算主频的提升能够继续,我们唯一能够实现算法加速的途径仍然是基础运算的并行执行。
这就是我们面临的困境:知道如何编制单个引擎,却不能提高它们的运行频率;知道如何设计具备数以百计内核的芯片,却没有高产出率的软件来对其进行编程。
不过,幸运的是我们本身就具有并行运算技术。人脑可不是一个在太赫兹频段运行的单核处理器。并行运算,迫使我们把算法的单核处理器实现方式分解为更多的部分。这就不仅是一个硬件性的任务了。话虽这么说,但与在概念和软件方面一直期待的突破相反,硬件架构设计再次处于先导地位,已经带来了数以百种的处理器变种,其发展趋势也在大家的意料之中。与早年遇到的困难相比,更好的工具的出现,可以使处理器的实现变得更为容易。现在,我们对计算机架构的基本原理有了更好的理解,能更容易地制定出合适的指令集架构定义。很多大学已经与处理器生产厂商联手发布新的架构。其中几个实例是斯坦福大学的流处理器架构(StreamProcessors)、麻省理工学院的RAW架构(Tilera的TILE64)、德州大学奥斯汀分校的TRIPS架构。
然而,与过去的成就相比,可以看到软件在这方面没有取得任何实质进展。这可能是多年前架构类型为数更少所造成的。
在70年代和80年代,开发难度和具体实现方面的成本仅允许人们在几个方面进行创新,大多数情况是在单处理器通用架构方面。为数不多的项目则是一个福音。这些都有望带来系统与应用程序的大量销售。开发者关注于用大批程序员来开发出更好的工具,而且要让更多的人来使用它们。软件可以从存储容量的提高和处理器性能的提升上获益。它可以让应用程序员们撇下汇编语言,而乐于采用像C和C++这样更高级的语言,虽然其工作效率有所降低,却具有更高的产出能力。而程序员们能完成更多任务,速度更快并采用可视化语言——它们变得更容易操作。
相比之下,我们就会发现,今天提供的各种并行化的各种内核运算指令集架构(ISA)相互之间基本上是不兼容的。它们将软件工具和应用程序的目标零散化了。处理器厂商所能提供的只是略加修改的单核处理器工具,因为在对特殊处理器提供支持方面,独立软件商们还没有什么强有力的原动力。
应用程序员现在必须“手工”把代码分段,再分配到多个处理器中运行。他们需要优化代码,以利用,或者说适应片上专门化的总线和内存配置。这一类工作,通常是由充满耐心的数学家和只能靠并行运算才能及时获得结果的其他科学家们来完成。
不停的尝试,通过建立架构概念和从科学运算中获得的教训,许多软硬件设计师们创造了优良的、数据密集式引擎和针对高性能应用开发的代码,如音频/视频,基础设施,信息网络,影像技术等。大多数内核的指令集架构还是传统的,并不支持并行结构。编程工具仍然是C和C++,这些工具适合于编写运行于单核上的程序。
目前号称采用多个平行引擎的通用处理技术还有待展示。该技术在何处可以不必依赖于上百万的、为x86等通用处理器编写代码的程序员?
Intel、AMD和其他的采用了若干片上内核的生产者们,推进了性能的非凡提升是世所公认的,他们可能有最好的答案。这些公司拥有很好的机会去传授,并吸引数以百万计的程序员,经过周密的研究和注意兼容性后,几个内核上的长线程被变换为多个内核上运行的更短的线程。
嵌入式和通用式电脑的设计师们在实现系统方面总是做出不同的选择,而他们采用并行处理时,也将继续体现出不同工作要求所造成的不同的影响。
在嵌入式系统世界里,大多数处理器的用途就是数据密集型应用。来自销售部门的信息彰现出拥有跟踪技术的完全可编程的并行引擎的优点,相比之下,包含硬连线芯核的异构结构具有较低的灵活性。
某些需要大规模并行处理器需要应用能提供有力支持,而某些系统代码很难编写。对其进行重新编程或增加新的功能和标准十分复杂,所需的时间和费用很可能与开发采用简单并行段、硬连线加速器和可运行操作系统的处理器异质架构的时间和费用相接近。今天的成功注定只能由上述几种为数很少的同质的并行处理器所取得,这些处理器要通过良好的功能特色、工具和出色的销售,来实现其在嵌入式领域中的运用。
台式电脑和笔记本电脑处理器的设计必须更趋保守。它们的发展将会放缓,因为它们更倾向于采用几个内核,而不是数十个或上百个内核。研究更多集中在少量的内核和智能高速缓存之间的通信上。其间,软件开发工具受到的影响很小,但对整体性能的改善将在更多的细节体现和不再那么遥不可及,优于大规模并行处理器在数据密集型领域的应用表现。
终有一天,我们一定能够以高清标准来玩游戏和看电影。
(译自《微处理器报告》)