The future of computing performance: game over or next level?(2011) 论文阅读
软件开发者逐渐依赖于多个方面的性能增长
- 增加一些可见的特征或者是针对于已有应用的更加精致的接口
- 增加一些“隐藏”的功能,例如安全性,可靠性和其它可信特征的改善,同时不会牺牲现有性能
- 使用更高层次的抽象,编程语言和系统,尽管会需要更多的计算能力但是会稍短开发时间,同时改善软件的质量
- 通过预测性能的提升,开发更加具有创新性,计算需求更强烈的应用,尽管这些应用在性能提升之前成本很高
开发的成本约束处理器的设计
虽然微处理器的底层技术发生了很大的改变,但是在多代微处理器的指令集兼容的情况下,软件的可移植性始终得到了保持,因此软件的投资成本也能够利用长的一段时间的分摊下来。
这个良性的循环的成功抑制了开发者开发替换计算机和编程模型的兴趣。新的架构在技术上可能会在特定的领域具有优越性,但是如果它无法提供软件兼容,那就不能在市场中占有一席之地,也逐渐会被成本更低的,性能也不断改进的通用处理器所替代。
单核处理器性能提升的限制
- 时钟频率的提升会带来功率的增大。在2004年以后,通过缩小CMOS电路规模,降低电源电压,提高时钟频率的策略已经无法继续下去。一方面,功耗增加,散热成为一个问题(系统消耗的能量,最终都是必须要消除的热量);另一方面,在移动端,电源并不能够提供更高的功率。
- 付出会逐渐少于回报。现如今已经几乎没有技术可以很大程度上提高单核处理器的性能。
计算机的性能最终都会受限于能耗或者功率,当性能的提升比能量的消耗少的时候,就已经达到了一个瓶颈。
low-power consumption and aggregate delivery of throughput cycles(低功耗和总吞吐量周期的交付)
计算机和信息技术技术行业,教育工作者可以被分成两类:研究;实践和教育。研究是针对于当前最严峻的挑战承担起解决问题的责任;实践则是为了未来的计算机的性能发展奠定基础,教育是使下一代技术专家能够有不同的针对问题的理解。
CSTB委员会提出了几个研究重点领域:算法,可广泛适用的并行编程发发,重新思考规范的计算堆栈,并行架构,功耗效率
并行化的要求:新的软件工程处理工具,包括新的编程语言(简单的表达并行化),新的软件堆栈(利用将软件映射到多种多样的新型硬件);新的软件编程思维
Long-term efforts should focus on rethinking the canonical computing “stack”—applications, programming language, compiler, runtime, virtual machine, operating system, hypervisor, and architecture—in light of parallelism and resource-management challenges.
未来投资方向:
- 应用驱动下的并行架构的发展
- invest in research to make computer systems more power-efficient at all system levels, including software, application-specific approaches, and alternative devices
提高功效的几种已经实现和未来可能研究的方法
- 为了提高效率,重新设计对计算机系统的供电和散热。
- 设计和部署系统,以保证能够以绝对最大功率来执行计算操作,并且使用更少的功率来传输和散热
- 通过利用局部性,开发通用处理器的替代品
- 开发domain-specific或者是application-specific处理器,类似于GPU,DSP。这些处理器能够提供更好的性能,更好的功耗效率。
- 研究CMOS以外可能的新型低功耗器件技术
定制化硬件设计的问题:初始化成本太高,设计复杂性也会被提高,同时市场所需要的数量并没有很多,无法将成本通过均摊来减少。
私营部门企业常常会创建专有的接口或者方法来提高自身的竞争优势。但是由于缺乏标准化,这样的做法反而会阻碍进步,因为方法虽然多,但是不相容,也无法被广泛采用和重用。因此在行业发展中鼓励参与标准化工作。
CSTB委员会敦促工业界和学术界开发“power tool”,帮助专家将遗留代码移植到未来的并行计算机上。 此外,还应强调加强代码创建,维护,验证和并行程序改编的工具和策略。
未来的计算机工作者需要精通的能力:编写并行程序并且能够在并行的硬件上很好的运行;设计并行软件系统;设计并行硬件
单核性能的瓶颈,目前看来的解决办法就是从计算机系统的各个层面进行并行化改进,包括软件设计,系统设计,硬件设计。并且这种办法应该也是多方面的,不仅仅是当前,也应该考虑到未来。我的感受就是并行将会非常重要,也是目前最可能解决计算机性能瓶颈的方法。